我第一次潛入htaccess/mod重寫的用途,並且我對重定向/掩碼有一點點麻煩。mod_rewrite /重定向?在查詢字符串
我有一個測試目錄我叫modrw
根文件夾,該文件夾中是一個index.php
文件有一個很好的和簡單的:
<?php echo $_GET['name']; ?>
在瀏覽器中,如果然後我型www.domain.com/modrw/{word}/
這個詞是在呼應頁面,這是我想要的。
如果我輸入www.domain.com/modrw/name={word}
,那麼我會被重定向到www.domain.com/modrw/{word}/
,這個詞也會按照我的意圖迴應。
但是,如果我指示瀏覽器的網址爲www.domain.com/modrw/?name={word}/
這個詞被回顯,但我沒有像我希望的那樣被重定向到www.domain.com/modrw/{word}/
。
?
如何造成麻煩?在下面的RewriteRule代碼中包含?
,我嘗試了幾種不同的方法,但無法使其工作。
這裏是我的htaccess文件:
RewriteEngine on
RewriteCond %{HTTP_HOST} !^www\.
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L]
RewriteCond %{REQUEST_URI} ^/[^\.]+[^/]$
RewriteRule ^(.*)$ http://%{HTTP_HOST}/$1/ [R=301,L]
RewriteRule ^modrw/?name=([^/\.]+)/?$ http://www.domain.com/modrw/$1 [R]
RewriteRule ^modrw/([^/\.]+)/?$ modrw/?name=$1
什麼原因造成的問題,有沒有包括?
一種特定的方式,它不挑這件事呢?我完全採取錯誤的做法嗎?
我也使用Options +FollowSymlinks
試過,但我不完全知道這是什麼也不做,如果它需要在所有...
啊,好的,謝謝!然而,我是否需要替換當前的RerwiteRule或者添加這個,我嘗試添加這個,但是通過使用兩個我得到一個重定向循環,並且如果我用我的代碼替換你的代碼,重定向對於它同時使用'?'沒有,但我得到404'd – Joe
你需要支持這兩個URI:1)'www.domain.com/modrw/name= {word}'和2)'www.domain.com/modrw?name = {字}'?如果是,那麼請在這裏發佈你的access.log和error.log相關輸出。 – anubhava
經過一番思考,我已經決定了我的工作方式實際上足夠好,被屏蔽/重定向的鏈接都是從我的網站生成的所有鏈接,因此除非有人手動輸入查詢到瀏覽器中不會有任何問題。因爲如果查詢不匹配,他們只會得到404'd。 'modrw/name = {word}'可以很好地重定向到'modrw/{word} /',如果{word}沒有使用mysql查詢獲取結果,反正會顯示錯誤消息。我不知道爲什麼我以前沒有考慮過它!但是,謝謝你的片段,它一定會很快派上用場,我敢肯定! :) – Joe