.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
最後の 4 行をコメントアウトすることで、問題が解決しました。しかし、.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 リクエストを行うページはルートの 1 つ下のディレクトリにあるため、404 エラーは 2 つのディレクトリの深さで発生しています。