我一直在网上阅读一些教程,并在这里搜索了几个其他问题,但我似乎无法掌握使用HTACCESS文件重写动态URL。
我有以下网址:
products.php?cat=2
products.php?cat=3
products.php?cat=4
我希望他们只说产品/ 2例如
equipment.php?cat=2&subCat=1
equipment.php?cat=2&subCat=2
equipment.php?cat=2&subCat=3
我希望这些可以说设备/ 2/1例如
product.php?id=3010-Z89CH24
我想说这些产品/ 3010-Z89CH24例如
但到目前为止只是尝试更改 products.php 页面,我有这个:
RewriteEngine On
RewriteCond %{HTTP_HOST} ^*******\.com [NC]
RewriteRule (.*) http://www.*******.com/$1 [L,R=301]
Options +FollowSymLinks
RewriteRule ^products/'^([1-9][0-9]{0,2})'$ http://www.*******.com/products.php?cat=/$2 [L]
# REMOVE PHP EXTENSIONS
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ $1.php [L,QSA]
事情是我不认为结尾部分“/ $ 2”是正确的,我也不确定其余部分:/
无论哪种方式,它都不适合我,我陷入困境并努力理解它:(
有人可以帮助我吗?
答案 0 :(得分:1)
启用mod_rewrite
和.htaccess
至httpd.conf
,然后将此代码放入DOCUMENT_ROOT/.htaccess
文件中:
Options +FollowSymLinks -MultiViews
# Turn mod_rewrite on
RewriteEngine On
RewriteBase /
## If the request is for a valid directory
RewriteCond %{REQUEST_FILENAME} -d [OR]
## If the request is for a valid file
RewriteCond %{REQUEST_FILENAME} -f [OR]
## If the request is for a valid link
RewriteCond %{REQUEST_FILENAME} -l
## don't do anything
RewriteRule ^ - [L]
RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s/+([^.]+)\.php\?cat=([^\s&]+)&subcat=([^\s&]+)\s [NC]
RewriteRule ^ /%1/%2/%3? [R=301,L]
RewriteRule ^([^/.]+)/([^/]+)/([^/]+)/?$ /$1.php?cat=$2&subcat=$3 [L,QSA]
RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s/+([^.]+)\.php\?cat=([^\s&]+)\s [NC]
RewriteRule ^ /%1/%2? [R=301,L]
RewriteRule ^([^/.]+)/([^/]+)/?$ /$1.php?cat=$2 [L,QSA]
答案 1 :(得分:0)
答案 2 :(得分:0)
你的问题是你的正则表达式是错误的 - 我建议你查看一些基本的正则表达式教程,注意捕获组的提及。
不检查 - 并假设你的基于数字的限制是正确的 - 我猜你想要一个像这样的规则:
RewriteRule ^/products/([1-9][0-9]{0,2})$ /products.php?cat=$1 [L]
如果您需要保留现有的查询字符串,您可能也需要QSA标记。</ p>