使用mod_rewrite允许包含或不包含斜杠的友好URL

时间:2013-01-23 03:06:48

标签: .htaccess

我正在尝试创建一个mod_rewrite规则,该规则将创建一个友好的URL,可以使用或不使用尾部斜杠。

例如。 domain.com/index.php?id=421可由输入domain.com/421或domain.com/421/的用户访问。

我目前有(相当简单的看法)规则:

RewriteEngine On
RewriteRule /(.*)$ /index.php?id=$1  

只要有一个尾部斜杠就可以正常工作,但是如果输入的URL没有,则会重新写入domain.com/domain.com/index.php?id=421

我完全超出了我的深度,所以任何帮助都将非常感激。

1 个答案:

答案 0 :(得分:1)

好的,我修好了。首先,我最终绕圈子玩了很长时间,因为我的浏览器正在缓存.htaccess文件(不知道他们这样做了!)所以无论我尝试了什么都没什么效果!一旦我努力工作,解决问题就轻而易举,这要归功于我在很多小时的挫折中读到的所有内容。我的解决方案是: -

RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} !(.*)/$
RewriteRule ^(.*)$ $1/ [L,R=301] 
RewriteRule (.*)/ index.php?id=$1 [L]

如果有人需要对此代码进行解释,则http://enarion.net/web/htaccess/trailing-slash/会涵盖大部分内容。