0

我需要快速查看我更新的 .htaccess 文件:

RewriteEngine On
# Redirects errors to 404 page
ErrorDocument 404 /404.php

# Redirect index.php to site root
RewriteCond %{HTTP_HOST} ^mysite.com [NC]
RewriteRule ^(.*)$ http://www.mysite.com/$1 [R=301,NC]
RewriteRule ^index.php$ http://www.mysite.com/ [R=301,L]

# Unless directory remove slash
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^/]+)/$ http://www.mysite.com/$1 [R=301,L]

# Remove .php
RewriteCond %{THE_REQUEST} ^(.+)\.php([#?][^\ ]*)?\ HTTP/
RewriteRule ^(.+)\.php$ http://www.mysite.com/$1 [R=301,L]

# Resolve .php file for extensionless php urls
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^([^/.]+)$ $1.php [L]

这是相当直接的。

第一个是 404 重定向。
第二个重定向 www.mysite.com/index.php 到 www.mysite.com
第三个删除斜杠。第四个删除 .php 扩展名。第五个解析php。

有人可以看看这个,请给我的代码一个快速的健全性检查。

4

1 回答 1

1

当您重定向用户时,下面的顶部可能更有意义,他们将再次浏览所有 .htaccess 文件。

您实际上在这里所做的是,如果true您告诉浏览器从不同的 url "" 再次加载网站[R=301]

# Redirect index.php to site root
RewriteCond %{HTTP_HOST} ^mysite.com [NC]
RewriteRule ^(.*)$ http://www.mysite.com/$1 [R=301]
RewriteRule ^index.php$ http://www.mysite.com/ [R=301,L]

您的其他重定向按合理的顺序排列,如果不是目录,则删除斜杠,如果 php 删除 .php,则在没有斜杠的情况下解析任何内容。

mysite.com/cake.php/请注意,如果用户在某些网址(例如,不存在)访问您的网站,这将导致相当多的重定向

mysite.com/cake.php/=> mysite.com/cake.php
mysite.com/cake.php=> mysite.com/cake
mysite.com/cake=>http://www.mysite.com/cake
http://www.mysite.com/cake解析为http://www.mysite.com/cake.php- 不存在
404=> http://www.mysite.com/404.php
http://www.mysite.com/404.php=>http://www.mysite.com/404

虽然总而言之,它可以满足您的需求!

于 2012-09-18T10:54:08.717 回答