htaccess添加尾部斜杠并强制www与干净的网址

imn*_*mns 5 php .htaccess

我正在使用我的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)

要进行调试,请注释掉各个部分,看看哪些部分不起作用.