2014-01-08 91 views
1

我正在尝试重新编写动态生成的URL。但我写的规则并不影响URL甚至一个位。Rewrite-dynamic URL .htaccess

的URL目前显示像:http://ukfurniturespecialist.co.uk/county.php?c=Oxfordshire&%20t=Faringdon

,我想它看起来像:​​

这是我曾尝试:

Options +FollowSymLinks 
RewriteEngine on 
RewriteRule county-c-(.*)-%20t-(.*)\.html$ county.php?c=$1&%20t=$2 

任何帮助非常感谢,谢谢。

+0

为什么那里有'%20'?如果你只是:'^县-c - (。*)$'它是否去'county.php'? – Halcyon

+0

我认为'%xx'代码被转换为它们的实际字符,但我不是100%确定的。在这种情况下,您需要匹配'\'。 – Sumurai8

+0

@FritsvanCampen:不,它不是:( – Jinandra

回答

1

对于您的网址下面的规则应该工作:

RewriteEngine On 
RewriteBase/

RewriteCond %{THE_REQUEST} \s/+county\.php\?c=([^&]*)&.*?t=([^&\s]*) [NC] 
RewriteRule^county-c-%1-t-%2.html? [R=302,L] 

RewriteRule ^county-c-([^-]+)-t-([^.]+)\.html$ county.php?c=$1&\%20t=$2 [L,QSA,NE] 
+0

嗨Anubhav很高兴在这里有像你这样的人anubhavi;)。但我已经尝试过你提出的建议,并且仍旧获得相同的旧网址。 – Jinandra

+0

好的,检查我的更新代码,并将其放在'DocumentRoot/.htaccess'中。 – anubhava

+0

我已经放置了更新的代码并将其放入根目录中。这真的很奇怪,我仍然得到相同的旧网址。我是否缺少需要检查的东西,我的意思是我已经尝试了在这篇文章中的每个stackoverflower在这里提出的建议,结果始终是旧的url。 – Jinandra

1

%20代表URL一个空格字符。写作重写规则的网址已经被解码时,用“\”处理了,而不是%20

为了您的URL重写规则应该是

Options +FollowSymLinks 
RewriteEngine on 
RewriteRule county-c-(.*)-\ t-(.*)\.html$ county.php?c=$1&\ t=$2 

我不认为你需要把空格字符在您的网址。如果您从网址中删除%20,则重写规则应为

RewriteRule county-c-(.*)-t-(.*)\.html$ county.php?c=$1&t=$2 
+0

感谢您在此发布ZubaiR。这真的很奇怪,我仍然得到相同的旧网址。我是否缺少需要检查的东西,我的意思是我已经尝试了在这篇文章中的每个stackoverflower在这里提出的建议,结果始终是旧的url。 – Jinandra

+0

放置此代码后,你的两个网址应该工作。即从您的浏览器,您将能够访问http://ukfurniturespecialist.co.uk/county-c-Oxfordshire-t-Faringdon.html和http://ukfurniturespecialist.co.uk/county.php?c=Oxfordshire& %20t = Faringdon – ZubaiR

+0

这两个网址都正常工作。这不是问题所在。问题是URL隐式显示在浏览器中是第二个。 – Jinandra