我使用 htaccess 文件与 mod_rewrite 来创建干净的网址,如下所示:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . index.php [L]
</IfModule>
我还想强制该网站拥有“www”子域,最重要的是,如果网址没有,则添加一个尾部斜杠。
我是一个绝对的 mod_rewrite 菜鸟,我尝试通过结合我在谷歌上找到的其他代码来自己完成这个任务(我知道很遗憾),但我总是以 500 错误告终。
这是我找到的强制 www 的代码:
<IfModule mod_rewrite.c>
Options +FollowSymLinks
RewriteCond %{HTTP_HOST} ^www\.domain\.tld$ [NC]
RewriteRule ^(.*)$ http://domain.tld/$1 [R=301,L]
</IfModule>
感谢您的帮助。
尝试将 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]
要进行调试,请注释掉各个部分并查看哪些部分有效/无效。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)