一切都在我的本地主机上运行,其中没有使用 .htaccess 文件。但是当我访问实际站点时,我遇到了 AJAX 请求的问题。我发现导致问题的部分是删除了 .php 扩展名。
这是我的 .htaccess 文件
Options +FollowSymLinks -MultiViews
RewriteEngine On
RewriteBase /
## redirect to 404 page when file does not exist
ErrorDocument 404 /404.php
## clean urls for blog.php
RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s/+blog\.php\?title=([^\s&]+)&? [NC]
RewriteRule ^ /blog/%1? [R=302,L]
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^blog/([\w-+]+)/?$ /blog.php?title=$1 [L]
## remove index.php
RewriteCond %{THE_REQUEST} ^.*/index.php
RewriteRule ^(.*)index.php$ /$1 [R=301,L]
RewriteCond %{THE_REQUEST} ^.*/index
RewriteRule ^(.*)index$ /$1 [R=301,L]
## To remove .php file extension
## RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s([^.]+)\.php [NC]
## RewriteRule ^ %1 [R,NC]
## RewriteCond %{REQUEST_FILENAME}.php -f
## RewriteRule ^ %{REQUEST_URI}.php
通过注释掉最后四行,它解决了问题。但我希望能够删除 .php 并仍然将 ajax 用于表单之类的东西。
这是阿贾克斯
$.ajax({
type:'post',
url:'inc/example.php',
data:$data,
async:false,
success:function(){
console.log('success');
},
error:function(r){
console.log(r.responseText);
}
});
ajax 中的错误函数显示我的 404 错误页面。我尝试从 ajax 请求中的 url 中删除 .php,不好。然后我尝试导航到 inc/example.php 并得到 404 页面。.htaccess 文件位于根目录,发出 ajax 请求的页面是根目录下的一个目录,因此 404 错误发生在两个目录深处。