Php 带有GET参数的mod_重写问题

Php 带有GET参数的mod_重写问题,php,regex,apache,.htaccess,mod-rewrite,Php,Regex,Apache,.htaccess,Mod Rewrite,我正在修改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 RewriteEn

我正在修改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服务器错误


有什么问题吗?

这是因为您的重写规则是无限循环的。这是因为
节/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分钟内再提出问题,我可以在评论中请求您的帮助吗?谢谢。我在路径中有一个名为“products”的文件夹:
/section/products/
。我还有产品回音文件(
products.php
),我希望能够区分
products
products/
,因此如果URL没有斜杠,应该转到
products.php
。如果URL有斜杠(没有任何其他内容作为
get
)传递),则必须重定向到
/section/products
(.php文件)。我希望我的解释是正确的。是的。在
/section/
内部,我有
/section/products.php
/section/products/
产品。php
/section/
加载,
product.php
是从
/section/products/
加载的,
/section/products/
中没有
索引.php
文件。有没有办法“模拟”
/section/products
?例如,将真实文件夹的名称更改为类似于\u products的名称,然后将其重新定向到
/section/products