【问题标题】:mod_rewrite issue with GET parameterGET 参数的 mod_rewrite 问题
【发布时间】:2017-04-08 21:55:07
【问题描述】:

我正在修改 Apache .htaccess 文件以重写产品的 URL,所以我可以从这里开始

domain.com/section/products/product.php?url=some-product-name

到这里

domain.com/section/products/some-product-name

这是我正在使用的mod_rewrite 代码:

Options -Indexes
Options +FollowSymlinks
Options -MultiViews
RewriteEngine on
RewriteBase /

RewriteRule ^section/products/(.*)$ /section/products/product.php?url=$1 [QSA,L]

它只是返回一个 500 服务器错误。

可能是什么问题?

【问题讨论】:

    标签: php regex apache .htaccess mod-rewrite


    【解决方案1】:

    这是因为你的重写规则是无限循环的。这是因为 section/products/(.*) 模式匹配原始和重写的 URI。

    您可以使用它来修复它:

    Options +FollowSymlinks -Indexes -MultiViews
    Options -MultiViews
    RewriteEngine on
    RewriteBase /
    
    RewriteRule ^(section/products)/([\w-]+)$ $1/product.php?url=$2 [QSA,L,NC]
    

    【讨论】:

    • 这是天才。非常感谢。我需要其他mod_rewrite 方面的帮助,我无法在 90 分钟内提出另一个问题,我可以在 cmets 中寻求您的帮助吗?
    • 谢谢。我在这个路径中有一个名为“产品”的文件夹:/section/products/。我也有 product echoer 文件 (products.php),我希望能够区分 productsproducts/,所以如果 URL 没有斜杠应该转到 @ 987654328@。如果 URL 有斜线(没有任何其他作为 get 传递)必须重定向到 /section/products(.php 文件)。我希望我解释正确。
    • 是的。在/section/ 里面我有/section/products.php/section/products/
    • products.php 是从 /section/ 加载的,product.php 是从 /section/products/ 加载的,/section/products/ 内部没有 index.php 文件。
    • 有没有办法“模拟”/section/products?例如,将真实文件夹的名称更改为 the_products 之类的名称,然后将其重定向到 /section/products
    猜你喜欢
    • 2011-05-19
    • 1970-01-01
    • 1970-01-01
    • 2014-01-08
    • 1970-01-01
    • 2011-06-08
    • 1970-01-01
    相关资源
    最近更新 更多