我正在尝试通过此URL重写获得一些帮助。我已经阅读了有关如何完成所有这些的多个教程和文档页面,但对我来说没有任何意义。我也不懂正则表达式,所以这也无济于事。我有一个半工作的代码,只需要帮助让它正常工作。
我需要:http://subdomain.domain.com?dl=2
重定向到http://domain.com/subdomain.php?dl=2
我的代码是
RewriteEngine on
RewriteCond %{HTTP_HOST} ^subdomain.example\.com$ [NC]
RewriteCond %{REQUEST_URI} !page.php
RewriteRule ^(.+/)?([^/]*)$ page.php?dl=$2 [QSA,L,NC]
哪个发送变量但无法找出子域部分。如果有人能帮助我,我们将不胜感激。
答案 0 :(得分:0)
您需要检查QUERY_STRING
RewriteRule
是否包含它。此外,您的规则未使用重定向标记R
。
RewriteEngine on
# First, check for the subdomain
RewriteCond %{HTTP_HOST} ^subdomain.domain.com$ [NC]
# Then, check the query string - it should match digits (\d+)
RewriteCond %{QUERY_STRING} ^dl=\d+ [NC]
# Check if we are not at subdomain.php
# (This is redundant, but leaving it here in case you really need it)
RewriteCond %{REQUEST_URI} !^/subdomain.php
# If all the above conditions are true, match a root-request
# and redirect to domain.com/subdomain.php with the query string
# Note: You don't need to actually specify the query string
# in the destination URI - Apache will automatically
# hand it over upon redirect (using the R flag).
# The only time this is not the case is when you
# either add the QSD flag, or append the destination
# URI with a question mark.
RewriteRule ^$ http://domain.com/subdomain.php [R=302,L]
以上内容会将http://subdomain.domain.com/?dl=2重定向到http://domain.com/subdomain.php?dl=2。如果您希望将重定向设为永久性并由浏览器和搜索引擎进行缓存,请将302
更改为301
。