3

.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 つのディレクトリの深さで発生しています。

4

1 に答える 1