簡體   English   中英

.htaccess將查詢字符串附加到內部重定向

[英].htaccess appending query string to internal redirect

我正試圖在.htaccess中創建SEO友好的蒙面重寫。 htaccess文件在localhost和我的個人服務器上工作正常,但遺憾的是它似乎無法在GoDaddy的服務器上運行。 我知道那已經是一個問題,但是為一個使用Godaddy作為主持人的客戶工作。

問題是重寫似乎是強制重定向顯示瀏覽器URL欄中重寫的查詢字符串而不是保持內部。 例如。

規則:

RewriteRule ^/?([a-zA-Z0-9-_/]*)$ /index.php?loadPage=$1&mode=cms [L,QSA]

鏈接: /images重定向到/images/?loadPage=images&mode=cms

這個“應該”保留為/images/瀏覽器。 我已經復制了下面的簡短.htaccess ,為開發塊修改了IP

<Files .htaccess>
    deny from all
</Files>

Options -MultiViews +FollowSymlinks -Indexes

RewriteEngine On
RewriteBase /

# Stop Old redirection from block below
RewriteCond %{REQUEST_URI} "/old/"
RewriteRule (.*) $1 [L]

# Under construction Redirect
RewriteCond %{REMOTE_ADDR} !^0.0.0.0
RewriteCond %{REQUEST_URI} !^/?old/
RewriteRule ^/?(.*) “/old/$1″ [L,QSA]

#Admin utilities rewrite
RewriteRule ^/?admin/?(.*)$ /index.php?loadPage=$1&mode=backend [L,QSA]

#CMS/Frontend rewrites -- this one is failing
RewriteRule ^\/?([a-zA-Z0-9-_]+)\/?$ /index.php?loadPage=$1&mode=cms [QSA,L]

一個潛在的注意事項是顯示的url是/images/?query_string ,而不是index.php?query_string ,所以它沒有進行完全重定向,盡管外部請求從頁面請求接收301響應。

我沒有測試任何東西,只是簡單地看着那條線......

RewriteRule ^\/?([a-zA-Z0-9-_]+)\/?$ /index.php?loadPage=$1&mode=cms [QSA,L]

有一個語法錯誤。 9之后的連字符應該在技術上作為范圍指示符進行轉義。 大多數時候,你看到的人將其放置在結束前的時間] ,所以它不會導致錯誤,所以大多數人認為他們沒有逃脫它。 你也不需要逃避正斜杠。 同樣使用問號使前一個可選,並且不知道為什么你想要那個。 所以它應該是這樣的:

RewriteRule ^([a-zA-Z0-9\-_]+)/?$ /index\.php?loadPage=$1&mode=cms [QSA,L]

我已經評論了其他一些規則,這樣你就可以知道發生了什么。 您正在接受任何不以“舊”開頭的內容,並將其重寫到舊目錄中。 之前的規則看起來就像你在找到“/ old /”這個詞的所有內容,並且你將它重定向到它自己。 您不應該收到0.0.0.0任何請求。

最后一條規則中的連字符需要轉到括號的末尾,因此Apache不會查找范圍。

由於我們正在處理.htaccess如果我們不使用REQUEST_URI我們不需要前面的斜杠。

RewriteEngine On
RewriteBase /

# Stop Old redirection from block below
RewriteCond %{REQUEST_URI} ^/old/(.*)$
RewriteRule .* %1 [L]

# Under construction Redirect
# RewriteCond %{REMOTE_ADDR} !^0.0.0.0
# RewriteCond %{REQUEST_URI} !^/?old/
# RewriteRule ^/?(.*) /old/$1 [L,QSA]

#Admin utilities rewrite
RewriteRule ^admin/(.*)$ index.php?loadPage=$1&mode=backend [L,QSA]

#CMS/Frontend rewrites
RewriteCond %{REQUEST_FILENAME} !^index.php$
RewriteRule ^([A_Za-z0-9_-]+)/?$ index.php?loadPage=$1&mode=cms [QSA,L]

暫無
暫無

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

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