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 仍然存在并且没有被重写。我尝试使用“新”重写链接访问,但它不起作用。

4

1 回答 1

2

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

您正在考虑浏览器重定向,它会更改地址栏,重写会采用更好看的 URL,并在内部将 URI 重写为服务器可以理解的内容。有关此过程的更好解释,请参阅此答案的上半部分。

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=somethingURI 并将带有 301 的浏览器重定向到看起来更漂亮的 URL。然后你的规则应该在内部重写它。

无论如何,您确实应该将您提供的链接更改为更好的 URL,依靠 mod_rewrite 来完成两端的工作确实效率低下。

于 2012-08-10T00:00:20.560 回答