【问题标题】:htaccess URL rewrite: What am I messing up in the code?htaccess URL 重写:我在代码中搞砸了什么?
【发布时间】:2024-01-18 18:17:01
【问题描述】:

我有以下重写规则:

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

我猜我的正则表达式搞砸了,但无法正确处理。

【问题讨论】:

    标签: regex .htaccess url-rewriting


    【解决方案1】:

    我认为第一个错误是在 (.) => www.

    之前放置不带反斜杠的点
     ^www\.([^/])/Catalog/([a-zA-Z0-9]+)/([a-zA-Z0-9_]+).html$ www.$1/Catalog/Catalog.php?string=$2
    

    这是一个明显的例子:

    重写规则 ^http://www.remotesite.com/(.*)$ /mirror/of/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

    【讨论】:

    • 天哪,我什至没有检查上传的评论。我在那里有反斜杠,但似乎 * 使用它作为转义。我要更新,以便代码正确显示。感谢您的收获和良好的阅读,比我通过 Google 找到的要好。
    • 这解决了你的问题还是我必须寻找更多的错误?
    • 目前还没有,但我会通读你给我的那篇文章,看看我是否能找到更多错误,然后再发回。
    • 好的...我等待您的回复,如果您在阅读 tut 后无法解决,请告诉我
    • 不,仍然没有得到任何重写。我开始怀疑服务器设置是否不适用于此规则,特别是因为更简单的重写正在起作用。