簡體   English   中英

使用htaccess重定向和重寫多個URL

[英]Redirecting and rewriting multiple urls with htaccess

我正在嘗試重定向和重寫以下URL,但在某些情況下,我想保留一些值,但對URL隱藏。 這是我想要獲得的示例:

我有以下網址:

  • www.mysite.com/?a=blue
  • www.mysite.com/?a=red
  • 等等
  • www.mysite.com/?a=orange&b=omega&c=echo&d=zulu
  • www.mysite.com/?a=orange&b=alfa&c=charlie&d=delta
  • 等等

我想得到這個網址:

  • www.mysite.com/blue
  • www.mysite.com/red
  • 等等
  • www.mysite.com/orange/zulu
  • www.mysite.com/orange/delta
  • 等等

我有這段代碼,前兩個示例運行良好,但是橙色示例不起作用:

<IfModule mod_rewrite.c>
RewriteEngine on
RewriteBase /

RewriteCond %{THE_REQUEST} /\?a=orange&b=([^\s&]+)&c=([^\s&]+)&d=([^\s&]+) [NC]
RewriteRule ^ /orange/%3/? [R=302,L,NE]

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^/orange/([^/.]+)/?$ ?a=orange&b=%1&c=%2&d=([^\s&]+) [L,QSA]

RewriteCond %{THE_REQUEST} /\?a=([^\s&]+) [NC]
RewriteRule ^ /%1/? [R=302,L,NE]

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^/.]+)/?$ ?a=$1 [L,QSA]
</IfModule>

您可以嘗試:

RewriteEngine On
RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s/\?a=([^&]+)&b=([^&]+)&c=([^&]+)&d=([^&\s]+) [NC]
RewriteRule ^ /%1/%4? [R,L]
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*?)/(.*?)/?$ /?a=$1&d=$2 [QSA,NC,L]

我已經解決了將“意大利面條代碼”遷移到Laravel框架並使用文件route.php傳遞變量和刀片模板以最大程度地減少此變量使用的問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM