2011-07-22 33 views
1

我有以下重写规则:htaccess URL重写:我在代码中搞了些什么?

Options +FollowSymlinks 
RewriteEngine on 
RewriteCond %{HTTP_HOST} Catalog\/(string|page)\/ 
RewriteRule ^Catalog\/(string|page)\/([^\/]+)\/[^\.]+\.html$ Catalog/Catalog.php?$1=$2 

重写规则是在同一行,但在这里可以显示在多行。

我的问题主要是我做错了什么。我没有收到任何错误,所以Rewrite正在工作。我输入到浏览器的地址是www.domain.com/Catalog/string/RT/Round_Tomato.html,我希望得到的是www.domain.com/Catalog/Catalog.php?string=RT

我在猜测我的正则表达式已经搞乱了,但一直没有弄清楚。

回答

1

我认为第一个错误的事情是在(。)=> www之前加上反斜杠。

^www\.([^/])/Catalog/([a-zA-Z0-9]+)/([a-zA-Z0-9_]+).html$ www.$1/Catalog/Catalog.php?string=$2 

这里是一个明显的例子:

重写规则^ HTTP:(。*)//www.remotesite.com/ $ /镜/的/ remotesite/$ 1

http://httpd.apache.org/docs/2.0/misc/rewriteguide.html

检查了这一点:

Options +FollowSymLinks 
RewriteEngine On 
RewriteBase/
RewriteRule ^Catalog/(.+)/(.+)\.html$ /Catalog/Catalog.php?$1=$2 

你应该重新启动Apache服务器 - 如果它是一个本地服务器 - (启动和停止),你必须能够访问http://localhost/Catalog/string/RT.html

+0

吉兹我甚而没有检查上传的评论。我在那里有反斜杠,但似乎stackoverflow使用它作为逃生。我要更新,以便代码正确显示。感谢您的阅读,并且阅读好,比我通过Google找到的要好。 –

+0

这是否解决了您的问题,或者我必须寻找更多的错误? –

+0

还没有到现在,但我会仔细阅读你给我看的内容,看看我是否能找到更多的错误,然后发回。 –