我正在使用我的htaccess文件和mod_rewrite来创建这样的干净网址:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . index.php [L]
</IfModule>
Run Code Online (Sandbox Code Playgroud)
我还想强制该网站拥有'www'子域名,并且最重要的是如果网址没有,则添加一个尾随斜杠.
我是mod_rewrite的绝对菜鸟,我尝试通过组合我在google上找到的其他代码来实现这一点(我知道很难过),但我总是以500错误结束.
这是我为force www找到的代码:
<IfModule mod_rewrite.c>
Options +FollowSymLinks
RewriteCond %{HTTP_HOST} ^www\.domain\.tld$ [NC]
RewriteRule ^(.*)$ http://domain.tld/$1 [R=301,L]
</IfModule>
Run Code Online (Sandbox Code Playgroud)
谢谢你的帮助.
Len*_*ncy 11
尝试分离出www和斜杠检查.经过测试,希望能为您服务.你没有说你是在运行放置在域根目录还是在子目录中 - 通常是在向htaccess寻求帮助时的良好信息.
RewriteEngine On
# Assuming you're running at domain root. Change to working directory if needed.
RewriteBase /
#
# www check
# If you're running in a subdirectory, then you'll need to add that in
# to the redirected url (http://www.mydomain.com/subdirectory/$1
RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteRule ^(.*)$ http://www.mydomain.com/$1 [R=301,L]
#
# Trailing slash check
# Don't fix direct file links
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} !(.*)/$
RewriteRule ^(.*)$ $1/ [L,R=301]
#
# Finally, forward everything to your front-controller
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule .* index.php [QSA,L]
Run Code Online (Sandbox Code Playgroud)
要进行调试,请注释掉各个部分,看看哪些部分不起作用.