重写到显示输入的URL的另一个地址

时间:2012-12-17 10:10:47

标签: php .htaccess mod-rewrite

我正在尝试重定向:

输入网址:

http://localhost/Test/Test1/key/val

到以下地址,但显示上一个网址:

http://localhost/Test/Test1/Test1.php?key=val

.htaccess文件位于/Test

我有这个,但总是得到HTTP错误404 NOT FOUND

RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_URI} ^([^/]*)/([^/]*)/([\w]+)$ [NC]
RewriteRule ^(.*)$  /%1.php?%2=%3 [L]

我已经搜索过这个,但找不到类似的问题。

我将非常感谢您对规则进行适当修改的任何帮助

2 个答案:

答案 0 :(得分:1)

我在你的规则中看到了几个问题。

.1重写条件正则表达式不匹配。

.2如果输入的URI有一个尾部斜杠,脚本将不会获取查询字符串,因为val变为val/

.3没有什么可以阻止循环。

你可以试试这个:

RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} (.*)[^/]*/([^/]*)/([^/]*)/([\w]+)/? [NC]
RewriteCond %{REQUEST_URI} !\.php  [NC]
RewriteRule .*  %1/%2/%2.php?%3=%4 [L]

希望这就是你所需要的。

答案 1 :(得分:0)

RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_URI} ^([^/]*)/([^/]*)/([\w]+)$ [NC]
RewriteRule ^(.*)$  /Test1/%1.php?%2=%3 [L]