2013-05-07 73 views
1

我用笨生成包含XML數據的頁面。該文件的URL位於/index.php/sitemap,但我想要通過/sitemap.xml訪問URL使用的.htaccess重定向到/sitemap.xml /index.php/sitemap/

我的.htaccess文件已被修改爲允許用戶訪問URL而不輸入/index.php/URL之前。這是.htacess文件我使用:

RewriteEngine On 

RewriteCond %{REQUEST_FILENAME} -s [OR] 
RewriteCond %{REQUEST_FILENAME} -l [OR] 
RewriteCond %{REQUEST_FILENAME} -d 
RewriteRule ^.*$ - [NC,L] 
RewriteRule ^.*$ index.php [NC,L] 

RewriteRule ^sitemap\.xml$ index.php/sitemap [L] 

一切工作正常,除了sitemap.xml的文件重定向。我運行XAMPP

Windows機器我在做什麼錯了?

+2

您可能需要移動索引規則上面的XML行,因爲一個將首先匹配。 – 2013-05-07 02:33:10

+1

我發現codeigniters的URL路由方法工作,但爲了將來的參考把這個規則在頂部給了我一個404錯誤。 – Xecure 2013-05-07 17:40:51

回答

2

跳過的.htaccess修改和使用一條正常的路線。

$route['sitemap\.xml'] = 'sitemap'; 
+0

謝謝,這工作。我不知道爲什麼我沒有考慮使用codeigniters URL路由。 – Xecure 2013-05-07 17:39:02

0
RewriteRule ^.*sitemap\.xml$ index.php/sitemap [L] 
RewriteRule ^(.*)$ /index.php/$1 [L] 

您在進入站點地圖檢查前匹配,因此總是重定向到index.php

這是從user guide的例子:

RewriteEngine on 
RewriteCond $1 !^(index\.php|images|robots\.txt) 
RewriteRule ^.*/(.*)$ /index.php/$1 [L] 

您可以只推了網站地圖支票在那裏之前標準的index.php改寫

RewriteEngine on 
RewriteCond $1 !^(index\.php|images|robots\.txt) 
RewriteRule ^.*/sitemap\.xml$ index.php/sitemap [L] 
RewriteRule ^.*/(.*)$ /index.php/$1 [L] 
+0

對於使用從用戶手冊中的例子某種原因給了我500服務器錯誤我的本地主機上的,所以我不得不使用其他'.htaccess'文件我的笨論壇發現 – Xecure 2013-05-07 05:10:25

+0

好了,所以只是把XML重寫索引之前.php重寫 – stormdrain 2013-05-07 11:18:16

+0

我發現codeigniters的URL路由方法可行,但爲了將來的參考,將這條規則放在頂部給了我一個404錯誤。 yo; – Xecure 2013-05-07 18:05:44

0

規則的順序很重要。規則按照它們寫入的順序進行處理。 .*匹配的一切,因此規則的

RewriteRule ^.*$ index.php [NC,L] 

格局重寫所有的請求,才能到達最後的規則。

當你把sitemap.xml規則上方,它會正常工作。

+0

我發現codeigniters的URL路由方法工作,但爲了將來的參考把這條規則放在頂部給了我一個404錯誤。 – Xecure 2013-05-07 17:40:28