php - .htaccess 子域参数在查询字符串中不可访问

标签 php .htaccess dynamic url-rewriting subdomain

我在.htaccess中写了如下规则

RewriteCond %{HTTP_HOST} ^([^\.]+)\.domain\.com 
RewriteCond %1 !^www$ [NC]
RewriteCond %{REQUEST_URI} ^/news/news-details\.php$
RewriteRule (.*) news.php?div=%1

它所做的是将请求传输到 news.php 文件,其中 div 变量等于 news/news-details.php。我不需要那样的 div。我需要用域编写的子域的值,就像用户来自 user.domain.com/news/news-details.php 一样。我需要将 news.php 文件中的 div 变量设为用户,即 news.php?div=user

编辑: 现在是 Htaccess 代码它导致根新闻详细信息页面选项出现问题

+FollowSymLinks
RewriteEngine on

# For Accessing News Details Page for root http://www.domain.com/news/news-details.php
RewriteCond %{HTTP_HOST} ^www.domain\.com [NC]
RewriteRule ^news/news-details.php$ news.php [QSA,NC,L]


# For Accessing News Details Page http://user.domain.com/news/news-details.php
RewriteCond %{HTTP_HOST} ^(.+)\.domain\.com [NC]
RewriteCond %{HTTP_HOST) !^www\.
RewriteRule ^news/news-details.php$  news.php?div=%1 [QSA,NC,L


# For www.domain.com it should go to the index page
RewriteCond %{HTTP_HOST} ^(www\.)?domain.com$ [NC]
RewriteRule ^(.*)$ index.php [NC,L]


# For Accessing Divisions Page user.domain.com should go to domain.com/divisions.php?division=user
RewriteCond %{HTTP_HOST} !^www\.domain\.com$
RewriteCond %{HTTP_HOST} ^(.*)\.domain\.com$
RewriteRule ^$ /divisions.php?division=%1 [L]

再次编辑:

这两个规则是冲突的

# For www.domain.com it should go to my-index.php page
#
RewriteCond %{HTTP_HOST} ^(www\.)?domain\.com$ [NC]
RewriteRule ^(.*)$ my-index.php [NC,L]


# For Page URL http://www.domain.com/news/news-details.php
#
RewriteCond %{REQUEST_URI} ^/news/news\-details\.php [NC]
RewriteCond %{HTTP_HOST} ^www\.domain\.com$  [NC]
RewriteRule ^(.*)$ my-news.php [NC,QSA,L]

最佳答案

试试这个:

RewriteCond %{REQUEST_URI} ^/news/news\-details.php$
RewriteCond %{HTTP_HOST} ^([a-z0-9]+)\.domain\.com$  [NC]
RewriteCond %1 !^www$ [NC]
RewriteRule ^(.*)$ news.php?div=%1 [NC,QSA,L]

RewriteCond %{REQUEST_URI} ^/news/news\-details\.php [NC]
RewriteCond %{HTTP_HOST} ^www\.domain\.com$  [NC]
RewriteRule ^(.*)$ news.php [NC,QSA,L]

RewriteCond %{HTTP_HOST} ^www\.domain\.com$  [NC]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php [NC,QSA,L]

RewriteCond %{HTTP_HOST} ^([a-z0-9]+)\.domain\.com$  [NC]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ divisions.php?division=%1 [NC,QSA,L]

关于php - .htaccess 子域参数在查询字符串中不可访问,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7498497/

相关文章:

java - redis - 获取与 PHP 客户端的连接时间

php - $_GET ['code' 的来源] 以获取 youtube api 凭据的刷新 token

laravel - HTAccess 将除特定 URL 之外的所有内容重定向到文件夹

.htaccess - htaccess规则重写.htaccess

apache - 如何在 .htaccess 中为特定 IP 地址设置 cookie

listview - 如何在 flutter 中动态显示卡片上的列表?

XCode 6.3 警告 : synthesize property

php - 计算一个文件在 PHP 中被下载了多少次

php - mysql 查询 if 语句

php - 在运行时在 php 中添加文本字段