我有重写规则工作正常,但最终如果在去index.php
时省略了尾部斜线,则更改可见的URL:
RewriteEngine on RewriteCond %{REQUEST_URI} !main RewriteRule /.* /~user/main$0
当有人访问
http://user.dev.example.com/utilities/pib/
该页面正常工作。 但是,如果他们访问
http://user.dev.example.com/utilities/pib
他们被redirect到
http://user.dev.example.com/~user/main/utilities/pib/
这仍然可以正常工作,但我宁愿让url不要改变。 服务器有其他configuration,允许~user
将您带到光盘上的public_html
(这些文件所在的位置)。 所以实际的URL应该是:
http://dev.example.com/~user/main/utilities/pib/
但它仍然留下了我的名字在领域。 我不确定我是否能够解决这个问题,但是我也不确定其他configuration可能导致这个问题。
你总是可以使用mod_rewrite附加一个尾部的斜杠
RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_URI} !(.*)/$ RewriteRule ^(.*)$ http://domain.com/$1/ [L,R=301]
把它加到你的第一条规则上面
上述规则不是它的原因。 检查conf.d
所有包含的configuration文件(或类似的)。 如果您设置AllowOverride All
,则使用以下命令查找所有.htaccess
文件:
find /path/to/document/root -name .htaccess
并看看那个。
我也build议你打开mod_rewrite
日志:
RewriteLog /tmp/rewrite.log RewriteLogLevel 9
看看如何parsingURI。