URL重写无效

时间:2012-07-12 12:48:00

标签: php .htaccess

在我的网站上,我正在尝试将一个长URL重写为一个SEO友好的URL。

我有以下代码,但它似乎没有影响任何东西!但是,如果我在我的htaccess中键入dgadgdfsg,则会引发内部服务器错误。所以我认为它与重写规则有关。

RewriteEngine On
RewriteRule ^([^/]*)/([^/]*)/([^/]*)$ /missing-people/user-profile.php?userID=$1&firstName=$2&lastName=$3 [L]

我已确认mod_rewrite已启用。


这是当前的网址

http://mysite.com/missing-people/user-profile.php?userID=1&firstName=Liam&lastName=Gallagher

这就是我想要的它看起来像

http://mysite.com/1/Liam/Gallagher

2 个答案:

答案 0 :(得分:1)

将您的RewriteRule更改为此(稍微修改自您的版本)

RewriteRule ^([^/]+)/([^/]+)/([^/]+)/?$ missing-people/user-profile.php?userID=$1&firstName=$2&lastName=$3 [QSA,L]

如果不起作用,请尝试使用R标记进行测试(这会使您的浏览器将原始URI更改为:/missing-people/user-profile.php?userID=1&firstName=Liam&lastName=Gallagher

答案 1 :(得分:0)

假设您的userID仅由数字组成,firstNamelastName仅为字母数字。

RewriteEngine On
RewriteRule /(\d+)/(\w+)/(\w+)/ /missing-people/user-profile.php?userID=$1&firstName=$2&lastName=$3 [L]

一个更严格的版本,除了它为评估的正则表达式的开头和结尾设置边界外,它做同样的事情。

RewriteEngine On
RewriteRule /^(\d+)\/(\w+)\/(\w+)$/ /missing-people/user-profile.php?userID=$1&firstName=$2&lastName=$3 [L]