.htaccess生成奇怪的URL

时间:2013-06-24 06:55:16

标签: php .htaccess mod-rewrite

我想将URL参数重定向到新文件。我有一个页面blog.php,它会生成如下链接的网址:http://localhost/project-DEV/blog/category/link-url-here/

但是当我点击链接时,它会为我提供网址

http://localhost/project-DEV/blog/blogs/blogs/blogs/blogs/blogs/blogs/blogs/blogs/blogs/blogs/blogs/blogs/blogs/blogs/blogs/blogs/blogs/blogs/blogs/blogs/uncategorized/hello-world/

以下是博客文件夹中的.htaccess文件。

RewriteEngine On
RewriteBase /project-DEV/blog
RewriteRule ^(.*)/?$  http\:\/\/localhost\/project-DEV\/blog\/index.php?$1 [L] 

我在博客文件夹中有一个blog/index.php文件。我想将此category/link-url-here/发送到我的index.php文件。

是否可以通过.htaccess像我试过的那样?为什么这个.htaccess代码不起作用?

2 个答案:

答案 0 :(得分:1)

尝试省略http://localhost部分:

RewriteEngine On
RewriteBase /project-DEV/blog
RewriteRule ^(.*)/?$  /project-DEV/blog/index.php?$1 [L]

如果这没有帮助,您可以添加条件以明确不重写index.php,以防止重写循环:

RewriteCond %{REQUEST_URI} !^/project-DEV/blog/index.php$

答案 1 :(得分:1)

由于您的RewriteRule几乎与每个请求相匹配,包括已经重写过的,因此会被重复调用。您需要重写规则,使其与已包含重写路径的请求不匹配,可能与RewriteCond匹配。

此外,请考虑阅读When Not To Use Rewrite并使用更轻,更快,更少混淆的mod_redirect代替mod_rewrite