[英]How to rewrite url and redirect with apache mod rewrite?
我有網址:
ipaddress / panelname / main / index.php
如何將其重建為
ipaddress / center / index.php
?
當然,我們可以看到其他頁面,不僅是index.php,而且可以永久看到url中的此文件夾。
我試圖在.htaccess中做到這一點:
RewriteEngine on
RewriteRule ^center/([^/]+)/?$ panelname/main/$1 [L]
RewriteRule ^/panelname(.*)$ /center$1 [QSA,L,R=301,NC]
Redirect 301 ^/panelname(.*)$ /center$1
但我看不到從panelname重定向到中心。 但是如果我輸入center一切都很好(但是我不保證,通過我的htaccess或我在文件系統中創建的symlink可以正常工作)
如何將所有內容重寫為另一個鏈接,以及如何查看從舊鏈接重定向到我的新鏈接? 謝謝。
目錄上下文(.htaccess是)中的RewriteRule
永遠不會以斜杠開頭,因為公共前綴首先從匹配的部分中刪除。
Redirect
不匹配字符串,而不匹配正則表達式。 適用於正則表達式的變量是RedirectMatch
。 兩者都只能用於絕對URL(以斜杠開頭的URL)。
您要么必須執行以下操作:
RewriteRule ^panelname(.*)$ /center$1 [R,L]
要么:
RedirectMatch 302 ^/panelname(.*)$ /center$1
測試完所有功能后,將[R]
更改為[R=301]
。 如果選擇第二個選項,則在測試一切正常后才將302更改為301。
如果要向訪問者顯示/center/index.php
並保持從舊URL到該URL的重定向,則將需要一個重定向和一個重寫規則(您已經擁有)。
RewriteEngine on
# external redirect from old URL to new one
RewriteCond %{THE_REQUEST} /panelname/main/(\S+) [NC]
RewriteRule ^ /center/%1 [R=302,L]
# internal forward from new URL to actual one
RewriteRule ^center/([^/]+)/?$ panelname/main/$1 [L]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.