唉.. mod_rewrite的让我觉得自己很傻。我只是还没有包裹着我的大脑左右呢。 :/

我有此URL:

http://example.com/a/name/

...我想点这里:

http://example.com/a/index.php?id=name

...其中name是什么,是获取传递到index.php作为id参数。

任何我已经尝试的结果在任何一个404或500 ..:(

有帮助吗?

解决方案

要开始您关闭:

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !index.php
RewriteRule ^/?a/([^/]+)/?$ /a/index.php?id=$1 [QSA,L]

如果一个重写教程不适合你,尝试另一个工作

编辑:排除index.php按浓汤的建议

其他提示

如果你想尾随斜线是可选的,你必须排除你重写请求文件。否则,你将有一个不错的无限递归。

RewriteEngine on
RewriteCond %{REQUEST_URI} !^/a/index\.php$
RewriteRule ^/a/([^/]+)/?$ /a/index.php?id=$1 [L]

下面,与/a/…启动,但它不/a/index.php改写为/a/index.php任何请求。

但是,如果最后的斜线是强制性的,也没有必要排除目标文件:

RewriteEngine on
RewriteRule ^/a/([^/]+)/$ /a/index.php?id=$1 [L]

沿着线也许一些

RewriteEngine on
RewriteBase /a/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)/?$ index.php?id=$1 [L,QSA]

将达到目的。

我建议你先看看这个网址:

http://www.dracos.co.uk/code/ Apache的重写-问题/

所提出的解决方案,将工作,但也有一些需要注意的URL解释,主要是有关?和#中的URL本身。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top