2014-01-28 53 views
1

所以,我试图做到这一点:“双向”重写

我们有一个网址/brand/new-inventory.php。这是我们网站内的物理文件。 我想要的是/brand/new。现在很简单。我不得不补充的是RewriteRule ^brand/new$ brand/new-inventory.php [L,QSA]

现在,我想获得的设置和我一直在挣扎是这样的:

我们需要/brand/new-inventory.php有人观看时重定向到/brand/new所以我们有一致的URL和什么,而不是。

但是,当我尝试RewriteRule ^brand/new-inventory.php$ brand/new [R=301,L] Firefox开始抱怨一个永远不会结束的重定向循环。

如何重写页面以响应不同的URL,并将旧URL重定向到新页面?

回答

1

有这样说:

RewriteCond %{THE_REQUEST} \s/+brand/new-inventory\.php[/\s?] [NC] 
RewriteRule^/brand/new [R=302,L] 

RewriteRule ^brand/new$ /brand/new-inventory.php [L,NC] 

不同的是使用的%{THE_REQUEST}表示,从您的浏览器Apache接收到原始请求。这个变量的值不会随着其他重写规则的应用而改变。

+0

什么是\ s/+?为什么在请求URI之前会有空格? – marcaddeo

+0

'%{THE_REQUEST}'有这个内容'GET /brand/new-inventory.php HTTP/1.1' – anubhava