我正在尝试设置一个重写规则,让客户访问单个产品页面(php文件)到一个页面,产品名称作为参数传递。旧格式是
http://example.com/product
,新格式为http://example.com/store.php?id=product
。
我可以使用以下规则
RewriteCond %{REQUEST_FILENAME} !-l
RewriteRule ^(.+).php$ store.php?url=$1 [QSA,L]
执行重定向,但仅当客户在其原始请求中包含.php扩展名时才有效。同样,我可以使用此规则:
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^(.*)$ $1.php
消除了用户输入扩展名的需要,但我一直无法成功地将两者结合起来。我尝试将第一条规则改为
RewriteCond %{REQUEST_FILENAME} !-l
RewriteRule ^(.+).$ store.php?url=$1 [QSA,L]
但这也会重定向图像和样式表,使网站无法使用。
更改我的.htaccess文件以满足这两个目标的最佳方法是什么(无需扩展名,重定向到原始页面名称作为参数的单页)?
提前致谢!
答案 0 :(得分:0)
见这里:https://github.com/fxstar/openshift/blob/master/.htaccess
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^.+?/((img|css|js|media|upload)/.+)$ /$1
RewriteRule ^([a-zA-Z0-9-]+)$ store.php?id=$1 [L,NC]