簡體   English   中英

Apache mod_rewrite 從不友好的查詢字符串到友好的 URL

[英]Apache mod_rewrite from unfriendly query string to a friendly URL

我是正則表達式和 Apache mod_rewrite 的新手,我嘗試了幾種方法,它沒有轉換為 URL 友好,我不知道我做錯了什么。

在這些情況下,我想從不友好的查詢字符串轉換為友好的 URL:

場景 1:發件人: https://example.com/page.php?page_url=life-is-good To: https://example.com/life-is-good/

我的 .htaccess:

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^/?(.*)/$  /page.php?page_url=$1 [L,R=301]

場景 2: 來自: https://example.com/resources/?blog.php?blog_url=life-is-good To: https://example.com/blogs/life-is-good/

我的 .htaccess:

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^/?(blogs)/(.*)/$ blogs/blog.php?blog_url=$2 [L,R=301]

非常感謝對此的任何幫助。

像這樣:

RewriteEngine On

# external redirect from actual URL to pretty one
RewriteCond %{THE_REQUEST} \s/+(blogs)/blog\.php\?blog_url=([^\s&]+) [NC]
RewriteRule ^ /%1/%2/? [R=301,L,NE]

RewriteCond %{THE_REQUEST} \s/+page\.php\?page_url=([^\s&]+) [NC]
RewriteRule ^ /%1/? [R=301,L,NE]

# ignore all the requests for existing files and directories
RewriteCond %{REQUEST_FILENAME} -f
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^ - [L]

# internal forwards from pretty URL to actual one

RewriteRule ^(blogs)/(.*)/$ $1/blog.php?blog_url=$2 [L,QSA,NC]

RewriteRule ^(.*)/$ page.php?page_url=$1 [L,QSA]

暫無
暫無

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

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