基本的htaccess代码不起作用

时间:2016-07-30 14:57:04

标签: .htaccess

这对我来说真的很令人沮丧,因为我一直试图让这个非常基本的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。不知道什么导致了这个错误。

2 个答案:

答案 0 :(得分:5)

我目前无法尝试此操作,但是,您的正则表达式不适合网址:

  

交易-details.php标题=造型%20Tools%20-%2020 %% 20off&安培;?ID = 7

基于en和解码,这可能是以下两个字符串:

  • 交易-details.php标题=造型%20Tools%20-%2020 %% 20off和ID = 7
  • Deal-details.php?title =造型工具 - 20%折扣& id = 7

在任何情况下都不符合您的表达式:

  

[..] Deal-details.php \?title \ =([A-Za-z0-9 - ] +)&amp; id =(\ d +) [..] < / p>

您缺少表达式中代表的字符,如:

  • &#34;%&#34;
  • &#34; &#34; (空间)

尝试以下表达式:

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]

这对我有用。