htaccess 使用动态 url 重定向

htaccess redirect using dynamic urls

我有一个执行大量重定向的 .htaccess 文件。我的一些重定向在 mod_rewrite 部分不起作用。我希望这些重定向像这样工作:

package_listing.php?package-type=fly-snooze-cruise => /fly-snooze-cruise
package_listing.php?package-type=fly-snooze-cruise&airport=orlando-airport => /fly-snooze-cruise/orlando-airport
package_listing.php?package-type=fly-snooze-cruise&airport=orlando-sanford-airport => /fly-snooze-cruise/orlando-sanford-airport
package_listing.php?package-type=fly-snooze-cruise&airport=melbourne-airport => /fly-snooze-cruise/melbourne-airport
package_listing.php?package-type=snooze-park-cruise => /snooze-park-cruise

到目前为止我尝试过的:

RewriteRule ^package_listing.php?package-type=(.*)$ / [L,R=301]
RewriteRule ^package_listing.php?package-type=(.*)$&airport=(.*)$ // [L,R=301]


RewriteRule ^package_listing.php?package-type=([A-Za-z/]*)$ / [L,R=301]
RewriteRule ^package_listing.php?package-type=([A-Za-z/]*)$&airport=([A-Za-z/]*)$ // [L,R=301]


RewriteRule ^package_listing.php?package-type=snooze-park-cruise$ /snooze-park-cruise [L,R=301]
RewriteRule ^package_listing.php?package-type=fly-snooze-cruise$ /fly-snooze-cruise [L,R=301]
RewriteRule ^package_listing.php?package-type=fly-snooze-cruise&airport=orlando-airport$ /fly-snooze-cruise/orlando-airport [L,R=301]
RewriteRule ^package_listing.php?package-type=fly-snooze-cruise&airport=orlando-sanford-airport$ /fly-snooze-cruise/orlando-sanford-airport [L,R=301]
RewriteRule ^package_listing.php?package-type=fly-snooze-cruise&airport=melbourne-airport$ /fly-snooze-cruise/melbourne-airport [L,R=301]

package-typeairport都是决定页面中要加载的动态内容的变量。

您将需要 2 个重定向规则:

RewriteEngine On

RewriteCond %{THE_REQUEST} /package_listing\.php\?package-type=([^\s&]+)\s [NC]
RewriteRule ^ /%1? [R=302,L,NE]

RewriteCond %{THE_REQUEST} /package_listing\.php\?package-type=([^\s&]+)&airport=([^\s&]+)\s [NC]
RewriteRule ^ /%1/%2? [R=302,L,NE]