我正在使用这个重写规则(取自本网站上的解决方案)来隐藏.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服务器上。这是在另一台服务器上测试的,并确认可以正常工作。
答案 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]