我有一个页面,其链接为:
http://www.example.com/listings.php?packageType=luxury-travel
我想发送给:
http://www.example.com/luxury-travel
还有:
http://www.example.com/listings.php?packageType=luxury-travel&packageTypeSub=remote-luxury-retreats
转到:
http://www.example.com/luxury-travel/remote-luxury-retreats
我用过:
RewriteEngine On
RewriteRule ^([^/]*)/([^/]*)$ /listings.php?packageType=$1&packageTypeSub=$2 [L]
最终会影响我拥有的其他网页,例如:
http://www.example.com/about-us
我也试过放置:
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
在。还试过玩:
RewriteCond %{QUERY_STRING} ^packageType=([^&]+) [NC,OR]
RewriteCond %{QUERY_STRING} &packageType=([^&]+) [NC]
RewriteRule ^([^/]*)$ /listings.php?packageType=$1 [L]
这两个链接只给我404错误。有人有主意吗?本来以为这本来就是一个简单的!
答案 0 :(得分:0)
在.htaccess文件中
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^/?([^\.*]+)/([^\.*]+)/?$ listings.php?packageType=$1&packageTypeSub=$2 [L,QSA]
RewriteRule ^/?([^\.*]+)/?$ listings.php?packageType=$1 [L,QSA]
答案 1 :(得分:0)
试试这个:
RewriteEngine on
RewriteCond %{THE_REQUEST} \ /+listings\.php\? [NC]
RewriteCond %{QUERY_STRING} (?:^|&)packageType=([^&]+)&packageTypeSub=([^&\s]+) [NC]
RewriteRule ^ /%1/%2? [R=301,NC,L]
RewriteRule ^([^/]+)/([^/]+)?$ /listings.php?packageType=$1&packageTypeSub=$2 [L]
请注意,如果只有packageType
可用,则规则会重定向到http://www.example.com/luxury-travel/
(请注意最后的/
),以帮助将其与http://www.example.com/about-us
等链接区分开来。
如果这不是一个选项,那么您可以添加专门提供页面/链接名称的规则。
答案 2 :(得分:0)
我编辑并删除了一些开发代码,因为它不起作用。
经过大量的讨论后,我终于找到了一个有效的解决方案:
# Rewrite specific pages - listings
# Allow packageType
RewriteCond %{THE_REQUEST} \ /+listings\.php\? [NC]
RewriteCond %{QUERY_STRING} (?:^|&)packageType=([^&]+) [NC]
RewriteCond %{QUERY_STRING} !&packageTypeSub=([^&]+)
RewriteRule ^ /%1/? [R=301,NC,L]
# Allow packageTypeSub
RewriteCond %{THE_REQUEST} \ /+listings\.php\? [NC]
RewriteCond %{QUERY_STRING} (?:^|&)packageType=([^&]+)&packageTypeSub=([^&\s]+) [NC]
RewriteRule ^ /%1/%2? [R=301,NC,L]
# Ignore the images folder allowing images to display
RewriteCond %{REQUEST_URI} !(upload-images) [NC]
RewriteRule ^([^/]+)/([^/]+)?$ /listings.php?packageType=$1&packageTypeSub=$2 [L]
主要问题是upload-images文件夹,其中包含正在阻止的网站包的所有图像。我设法从重写规则中排除了这个文件夹,它现在似乎正在工作。感谢你的帮助。希望这将有助于其他人。