呃.. mod_rewrite让我感到愚蠢。我还没有把我的大脑包裹起来。 :/
我有这个网址:
http://example.com/a/name/
......我想在此指出:
http://example.com/a/index.php?id=name
...其中name
是作为index.php
参数传递给id
的内容。
我尝试的任何东西都会产生404或500 .. :(
答案 0 :(得分:2)
如果希望尾部斜杠是可选的,则必须排除要重写请求的文件。否则你将有一个很好的无限递归。
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]
答案 1 :(得分:1)
让你开始:
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !index.php
RewriteRule ^/?a/([^/]+)/?$ /a/index.php?id=$1 [QSA,L]
如果一个重写教程不适合您,try another。
修改:根据Gumbo的建议排除index.php
答案 2 :(得分:1)
也许是
的内容
RewriteEngine on
RewriteBase /a/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)/?$ index.php?id=$1 [L,QSA]
会做到这一点。
答案 3 :(得分:1)
我建议你看一下这个网址:
http://www.dracos.co.uk/code/apache-rewrite-problem/
提供的解决方案可行,但URL中有一些注意事项,主要是关于?和#在URL本身。