2012-08-09 90 views
0
Options +FollowSymLinks 
RewriteEngine On 
RewriteRule ^product/([0-9]+)/([0-9]+)/([0-9]+)/([0-9]+)/([a-zA-Z]+)/$ product.php?id=$1&srl=$2&item=$3&page=$4&title=$5#titleProduct 

当我点击f5按钮进行刷新时,URL保持不变,它不会被重写。我尝试访问“新”重新链接,但它不起作用。htaccess将不会重写url

+0

您是否在您的主要conf文件中检查了AccessFileName,如果它未设置为其他内容? – Mamadum 2012-08-09 23:24:12

+0

目前我正在使用免费的网络托管服务。我在哪里可以找到这个文件? – 2012-08-09 23:29:58

+0

你可能无法访问apache2配置文件。询问您的提供商是否可以使用.htaccess文件。 – Mamadum 2012-08-09 23:35:41

回答

2

哇,这意味着我需要更新每一个文件的“新”重写?所有文件都包含与“旧”链接不同的超链接。我想如果我写一个.htaccess文件,所有的URL都会自动重写。

您正在考虑浏览器重定向,即更改地址栏,重写需要更好看的URL并在内部将URI重写为服务器可以理解的内容。请参阅this answer for a better explanation of this process的上半部分。

因此,如果浏览器实际请求product.php文件,然后重定向到假的漂亮的URL,则可以执行浏览器重定向。然后,浏览器将重新发送一个新的请求,看起来很漂亮的URL和服务器得到它,在内部重写返回到php文件(你有的规则)。

RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /product\.php\?id=([^&]+)&srl=([^&]+)&item=([^&]+)&page=([^&]+)&title=([^&\ ]+) 
RewriteRule ^product.php$ /product/%1/%2/%3/%4/%5/ [L,R=301] 

这将需要/product.php\?id=123&srl=abc&item=qwerty&page=blah&title=something URI,并用301浏览器重定向到更好看的URL。那么你的规则应该在内部重写它。

无论如何,你真的应该改变你服务的链接到更好的URL,依靠mod_rewrite做两端工作是真的效率低下。