【发布时间】:2015-12-31 14:16:11
【问题描述】:
在我的域的 .htacess 中,我必须将子域指向域的第一个 GET 参数。子域代表语言(例如 en.、fr 等...)。 为了达到这个目的,这里重写.htaccess中的代码:
Options +FollowSymLinks
RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_HOST} ^(.*)\.example\.com$ [NC]
RewriteRule ^(.*)$ $1?lang=%1 [NC,L]
我创建了一个名为test 的目录。该目录只包含 index.html 文件。
所以当你在浏览器的网址栏中输入en.example.com/test/,
重写代码有效。
但是如果你输入en.example.com/test 没有最后的斜线,它会重定向到en.example.com/test/?lang=en => 这是一个问题。
那么你有什么改正的想法吗?
在此先感谢您。
【问题讨论】:
-
参见here '尾斜线问题'。它适用于 Apache 2.0,但仍适用于 2.4。
-
谢谢,但我在我的代码中尝试了它:
RewriteCond %{HTTP_HOST} ^(.*)\.example\.com$ [NC] RewriteRule ^(.*)$ $1?lang=%1 [NC] RewriteCond %{REQUEST_FILENAME} -d RewriteRule ^(.+[^/])$ $1/ [R]=> 它不起作用。 -
您需要将新规则放在您已有的规则之前。
-
你是这个意思吗? :
RewriteCond %{REQUEST_FILENAME} -d RewriteRule ^(.+[^/])$ $1/ [R] RewriteCond %{HTTP_HOST} ^(.*)\.example\.com$ [NC] RewriteRule ^(.*)$ $1?lang=%1 [NC,L]=> 又不行了 -
按照你原来的规则,如果你输入
en.example.com/test/(带斜线),它是否也会重定向到en.example.com/test/?lang=en?