2013-11-04 61 views
1

我想将?=重写为正斜杠而不必重写整个URL。我有很多麻烦让我的头在.htaccess左右,但它可以简单地将?=转换为/ - 这在我看来就像一个更简单的选项。我尝试了各种方法,但它毁了我的.js和css文件,为什么我不能将这两个字符重写为/?重写“?”和“=”转换为正斜杠/

我从所有URL消除.php为:

# -FrontPage- 
RewriteEngine on 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME}\.php -f 
RewriteRule ^(.*)$ $1.php 

# BEGIN GZIP 
<ifmodule mod_deflate.c> 
AddOutputFilterByType DEFLATE text/text text/html text/plain text/xml text/css application/x-javascript application/javascript x-font/otf x-font/TTF x-font/eot 
</ifmodule> 
# END GZIP 

这是我的网址我想转换,但只有?和=

www.example.com/search?store=hello 

www.example.com/search/store/hello 

回答

3

您是否在寻找这么简单的东西吗?

RewriteRule ^search/([^/]+)/([^/]+)$ /search.php?=$2 

把它放在你当前的RewriteRule之上,它应该可以正常工作。

RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule ^search/([^/]+)/([^/]+)$ /search.php?=$2 
RewriteRule ^(.*)\.php$ $1.php 
+0

谢谢,我遇到的问题是这打破了.css和.js文件? – SethCodes

+0

@SethCodes这应该只打破css/js文件,如果它们匹配正则表达式(以“search /”开头,那么在到达另一个“/”之前至少有一个字符,那么在结束之前至少有一个字符不是斜杠) 。如果你不想匹配句点(以防它与你的js/css冲突),你可以改变最后一句为'([^/\。] +)'。这意味着“不是斜线的字符,也不是重复1次到无限次的周期”。 – h2ooooooo

+0

'RewriteRule^search /([^/]+)/([^/\.]+)$ /search.php?$ 1 = $ 2'使用它,它取得了结果,但CSS和JS仍然对我很bit 012。如果有另一种方法来阻止js/css发生冲突?图像也冲突。 – SethCodes