Mod Rewrite删除了ajax的扩展名

时间:2014-06-06 17:00:28

标签: ajax .htaccess mod-rewrite

我正在使用这个重写规则(取自本网站上的解决方案)来隐藏.php并且它可以工作,但它不允许我的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.

这部分对我来说是新的,所以它仍然很混乱,谢谢

更新 下面选择的答案是正确的并且有效,而不是在我的Godaddy服务器上。这是在另一台服务器上测试的,并确认可以正常工作。

1 个答案:

答案 0 :(得分: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]