htaccess URL重写:我在代码中弄乱了什么?

时间:2011-07-22 15:37:36

标签: regex .htaccess url-rewriting

我有以下重写规则:

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

RewriteRule在一行上,但可能在这里显示多行。

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

我猜我的正则表达式搞砸了,但一直没能做到。

1 个答案:

答案 0 :(得分:1)

我认为第一个错误的事情就是在没有反斜杠之前加点(。)=>万维网。

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

这是一个明显的例子:

  

RewriteRule ^ 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