2012-01-07 109 views
0

htaccess重定向並希望將(domain.com,domain.com/,domain.com/index.php)上的所有訪問者重定向到www.domain.com /index.php#block_1。下面是我在.htaccess規則將索引頁面重定向到索引頁面,並在htaccess中附加了索引頁面

RewriteEngine on 
RewriteCond %{HTTP_HOST} ^domain.com [NC] 
RewriteRule ^(.*)$ http://www.domain.com/$1 [L,R=301] 

RewriteRule index\.php index.php#block_1 [NE] 

我不斷收到錯誤500,有的一個點什麼即時做錯了

回答

3

我相信錯誤是因爲你指定內部(非HTTP)重定向,恰好發送apache到重定向循環。

嘗試:

RewriteRule index\.php index.php#block_1 [NE,R] 

由於瀏覽器的URL字符串的錨部從來沒有發送到服務器,你不能測試,所以這可能會導致一個無限HTTP重定向循環爲客戶端。

您可能必須重定向到第二頁,如下所示。

RewriteRule index\.php otherpage.php#block_1 [NE,R] 

mod_rewrite documentation解釋了這一切。

+0

我得到這個當我使用這個http://www.domain.com/var/www/html/index2.php#block_1 – 2012-01-07 23:50:17

+0

好了嗎?壞?我將重新迭代:由於您嘗試執行的重定向的性質,您將無法使用同一頁作爲此重定向的源和目標。 – Lethargy 2012-01-08 00:00:29

+0

我得到了,但我的意思是,它重定向並追加URL的相對路徑,即/ var/www/html /' – 2012-01-08 01:15:49

0

要逃避「#」,請使用規則上的[NE,L]標誌嘗試\%23。

RewriteRule index\.php index.php\%23block_1 [NE,L] 
+0

內部服務器錯誤 – 2012-01-07 23:47:22

+0

看看@Lethargy \%23的回覆是在.htaccess中轉義#的正確方法。 – 2012-01-08 00:06:23

+0

由於#block_1只能被網頁瀏覽器處理,所以當頁面加載完成後,您應該使用Javascript強制瀏覽器專注於#block_1。 – 2012-01-08 00:08:16