我知道这已被问了好几次,但我现在已经在脑子里打了几个小时,而我似乎无法弄清楚这一点。
所以我有一个网址:http://example.com/product.php?id=123 我想重写为http://example.com/product/123
我有这段代码:
RewriteRule ^product/([^/\.]+)/?$ product.php?id=$1
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([A-Za-z-\s0-9]+)$ /product.php?id=$1 [L]
它使http://example.com/product/123 url工作,但是图片没有加载,我猜是因为php试图在/ product目录中找到它们,而且如果我输入了orignal url它没有'得到改写。
那你可以帮我解决这些问题吗?
非常感谢任何帮助!
答案 0 :(得分:1)
将此代码放入DOCUMENT_ROOT/.htaccess
文件中:
RewriteEngine On
RewriteBase /
RewriteCond %{THE_REQUEST} \s/+product\.php\?id=([^\s&]+) [NC]
RewriteRule ^ product/%1? [R=301,L]
RewriteCond %{REQUEST_FILENAME} -d [OR]
RewriteCond %{REQUEST_FILENAME} -f
RewriteRule ^ - [L]
RewriteRule ^product/([^/.]+)/?$ product.php?id=$1 [L,QSA]
RewriteRule ^([A-Za-z\s0-9-]+)/?$ /product.php?id=$1 [L,QSA]
对于css / js / images的问题,请在css,js,images文件中使用绝对路径,而不是相对路径。这意味着您必须确保这些文件的路径以http://
或斜杠/
开头。
您可以尝试在页面的HTML标题中添加:<base href="/" />