1
我有一個非常基本的重寫規則,我一直在試圖實現我的頭撞牆。我有一個靜態HTML網站,我想要漂亮的URL。重定向和重寫從url中刪除.html
所以,我想/something
服務/something.html
,我也想從/something.html
重定向(外部)到/something
爲不SEO受到懲罰主辦重複的內容。
我不希望使用在Multiviews,我不希望使用<rel cannonical="">
這是我現在有。
RewriteRule ^(.*)\.html$ /$1 [R=302,L]
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME}\.html -f
RewriteRule ^(.*)$ $1.html [L]
它導致無限重定向循環。
在我看來,第一條規則即使在請求的URL不以.html結尾後仍然保持匹配。
假設我要求/something.html。第一次通過我應該擊中第一條規則,並從外部重定向到/某物。根據這一要求,爲什麼第一條規則甚至匹配?或者第二條規則得到執行,那麼第一條規則會再次運行? –
是的第一條規則是301對'/ something'進行操作,然後第二條規則將內部對象改變爲'/ something.html',然後第一條規則再次運行並使其成爲'/ something'等等。只要記住,只要有匹配的規則,mod_rewrite就會一直運行你的循環。 – anubhava
即使你有[L]標誌? –