这对我来说真的很令人沮丧,因为我一直试图让这个非常基本的htaccess重写工作数小时,但无法完成。
我试过了。
Options +FollowSymlinks
RewriteEngine On
RewriteBase /funshoppie/
############ Details page ################
RewriteCond %{THE_REQUEST} Deal\-details\.php\?title\=([A-Za-z0-9-]+)&id=(\d+) [NC]
RewriteRule ^%1%2? [R=301,L,NE]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^Deals/([A-Za-z0-9-]+)/([A-Za-z0-9-]+)/?$ Deal-details.php?title=$1&id=$2 [NC,QSA,L]
谁能告诉我我在做什么错?
url我正在尝试重写
http://localhost/funshoppie/Deal-details.php?title=Styling%20Tools%20-%2020%%20off&id=7
成功之后我想要的是什么
http://localhost/funshoppie/Deals/Styling-Tools-20%-off/7
我检查了错误日志,httpconf&确保取消注释rewrite_module。不知道什么导致了这个错误。
答案 0 :(得分:5)
我目前无法尝试此操作,但是,您的正则表达式不适合网址:
交易-details.php标题=造型%20Tools%20-%2020 %% 20off&安培;?ID = 7
基于en和解码,这可能是以下两个字符串:
在任何情况下都不符合您的表达式:
[..] Deal-details.php \?title \ =([A-Za-z0-9 - ] +)&amp; id =(\ d +) [..] < / p>
您缺少表达式中代表的字符,如:
尝试以下表达式:
Deal\-details\.php\?title\=(.+)&id=(\d+)
这将匹配任何字符标题。否则我认为没有问题。
答案 1 :(得分:-1)
最后,我相信我自己想出来了。
最后一次重写规则中存在一些尾随斜杠问题,因为它没有按预期执行。我进一步改写了所有现有的&amp;未来的网址通过一些干净的网址功能&amp;在url中使用那些漂亮的语句。然后它工作!!
RewriteCond %{THE_REQUEST} Deal\-details\.php\?title\=([A-Za-z0-9-_]+)&id\=(\d+) [NC]
RewriteRule ^ %1/%2? [R=301,L,NE]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([A-Za-z0-9-_]+)/(\d+)$ Deal-details.php?title=$1&id=$2 [NC,QSA,L]
这对我有用。