2014-06-06 34 views
0

我使用這個重寫規則(取自本網站的解決方案)來隱藏.php,它的工作原理,但它不允許我的ajax現在工作。Mod Rewrite刪除ajax的擴展

# Unless directory, remove trailing slash 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^([^/]+)/$ http://domain.us/php/$1 [R=301,L] 

# Redirect external .php requests to extensionless url 
RewriteCond %{THE_REQUEST} ^(.+)\.php([#?][^\ ]*)?\ HTTP/ 
RewriteRule ^(.+)\.php$ http://domain.us/$1 [R=301,L] 

# Resolve .php file for extensionless php urls 
RewriteRule ^([^/.]+)$ $1.php [L] 

我只有幾頁我實際上想隱藏.php擴展名,所以也許有不同的方式來做到這一點。我會很好地瞄準我需要的網頁,而不是所有符合條件的網頁。

這是我的錯誤:

XMLHttpRequest cannot load http://domain.us/php/get. No 
'Access-Control-Allow-Origin' header is present on the requested resource. 
Origin 'http://www.domain.us' is therefore not allowed access. 

這是一個全新的我,所以這是非常令人困惑的是,由於

UPDATE 下選擇的答案是正確的和作品,只是不在我的Godaddy服務器上。這在另一臺服務器上進行了測試,並被證實可以正常工作

+0

打開Firebug,然後再次運行我們的要求。報告你在'Net'選項卡中看到的內容。 – anubhava

+0

說404沒有找到。與上面的文件擴展名不同,文件擴展名被刪除。應該是get.php和螢火蟲只說得到 – Jptalon

+0

好按照你的規則'/ get.php'會變成'/ get',但你爲什麼得到404?你的最後一條規則會在內部使它成爲'/ get.php'。 – anubhava

回答

1

您的最後一個規則改成這樣:

RewriteEngine On 
RewriteBase/

# Unless directory, remove trailing slash 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^([^/]+)/$ http://domain.us/php/$1 [R=301,L] 

# Redirect external .php requests to extensionless url 
#RewriteCond %{THE_REQUEST} ^(.+)\.php([#?][^\ ]*)?\ HTTP/ 
#RewriteRule ^(.+)\.php$ http://domain.us/$1 [R=301,L] 

RewriteRule ^tos/?$ tos.php [L,NC] 

RewriteRule ^account/?$ account.php [L,NC] 

RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{DOCUMENT_ROOT}/%{REQUEST_URI}\.php -f [NC] 
RewriteRule ^(.+?)/?$ $1.php [L]