htaccess的重写规则与参数传递到特定位置
我有有一个链接的页面:htaccess的重写规则与参数传递到特定位置
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]
这最终影响了,我有,如其他页面:
我也曾尝试把:
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错误的两个链接。有人有主意吗?原以为这会是一个简单的!
在.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]
试试这个:
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
这样的链接。
如果这不是一个选项,那么你会添加专门提供页面/链接名称的规则。
谢谢拉维。我最终得到了这个重新直接循环。 – 2015-02-23 07:19:40
@IanFraser请尝试更新。 – 2015-02-23 07:38:28
谢谢拉维。我测试过它,它也可以工作。 我确实有问题。我应该提到我也有其他页面需要指导: http://example.com/location.php?place=vancouver 到 http://example.com/vancouver 另外我需要处理: http://example.com/product.php?packageType=luxury-travel&id=42 至 http://example.com/luxury-travel/private-touring/product-name/42 – 2015-02-23 08:36:10
我编辑并删除了一些开发代码,因为它不工作。
很多headscratching后,我终于发现了有效的解决方案:
# 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]
的主要问题是,它包含所有站点包图像是被阻止上传图像文件夹中。我设法从重写规则中排除此文件夹,现在它似乎正在工作。感谢你的帮助。希望这将有助于未来的其他人。
很棒,你找到了解决方案!但是,最好保留原始问题,并将解决方案作为答案发布。这样,有类似问题的人可以找到他们的问题(你的问题),并看到一个解决方案。 – 2015-02-24 07:04:13
干杯李,我保留在原来的问题,刚刚剥离了一些更新编辑我补充说,没用;) – 2015-02-24 07:06:04
我明白了。但是从解决方案*这个词到帖子末尾的部分不属于这个问题。这是一个很好的答案,显然(它对你有用:))。 SO鼓励回答你自己的问题,你甚至可以选择它作为接受的答案。 – 2015-02-24 07:09:55
感谢您的帮助。试过这个,但似乎没有工作。在其他网页(例如/ contact等)上导致错误。此外,对于以下链接也完全没有效果: http://www.example.com/luxury-travel/remote-luxury-retreats – 2015-02-23 07:18:47
修正:管理得到它工作好,但有其他链接的问题?已编辑原始帖子。 – 2015-02-23 08:47:41