重写条件重定向而不是重写

时间:2012-04-15 19:59:55

标签: .htaccess

尝试使用htacess将我的网址http://givehands.co.in/post.php?p=post&id=1重写为http://givehands.co.in/post/1/

但它被重定向到网址http://givehands.co.in/post.php?p=post&id=1而不是重写它?我的域名发送被映射到我的网络服务器的子目录。

任何人都可以帮我解决正确的重写规则吗?我对此很新。

Options -Multiviews
RewriteEngine On    # Turn on the rewriting engine
RewriteBase /
RewriteCond %{REQUEST_URI} post/(.*)
RewriteRule post/(.*)/ http://givehands.co.in/post.php?p=post&id=$1 [L]
RewriteCond %{REQUEST_URI} post/
RewriteRule post/ http://givehands.co.in/post.php [L]

1 个答案:

答案 0 :(得分:1)

您的重定向规则中似乎有一个完整的网址:

RewriteCond %{REQUEST_URI} post/ 
RewriteRule post/ http://givehands.co.in/post.php [L]

在其中放置完整的URL会强制Apache重定向浏览器而不是重写它。如果givehands.co.in是您正在托管的域名,请尝试将其更改为:

RewriteCond %{REQUEST_URI} post/ 
RewriteRule post/ /post.php [L]

如果givehands.co.in不在您的服务器上,或者在不同的VirtualHost下,那么无法“重写”该URL,您必须重定向浏览器(这就是为什么Apache会带头为你做这件事。)

你实际上可以设置一个反向代理来做这样的事情,但这可能是另一个讨论的主题:)