在我的网站上,我正在尝试将一个长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
答案 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
仅由数字组成,firstName
和lastName
仅为字母数字。
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]