Kesalahan Server Internal ketika url memiliki dua nama file
Saya mendapatkan 500 Internal Server Error ketika saya menulis nama file dua kali dari url.
Saya menggunakan RewriteRule berikut untuk url Profil pengguna:
RewriteRule ^profile/([^/]+)/?$ profile.php?username=$1 [L,QSA,NC]
RewriteRule ^profile/(followers|friends|saved|stories)/([^/]+)/?$ $1.php?username=$2 [L,QSA,NC]
Aturan bekerja dengan baik dengan tautan ini:
https://www.thewebsiteurl.com/profile/username
Tetapi jika saya menulis nama file dua kali seperti ini
https://www.thewebsiteurl.com/profile/profile/username
maka saya mendapatkan 500 Internal Server Error.
Apakah ada jawaban untuk mengatasi masalah ini?
Ini kode Penuh HTACCESS saya:
Options +FollowSymLinks -MultiViews
RewriteEngine On
RewriteCond %{HTTP_HOST} ^[^.]+\.[^.]+$
RewriteCond %{HTTPS}s ^on(s)|
RewriteRule ^ http%1://www.%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
RewriteBase /
ErrorDocument 404 https://www.websiteurl.com/sources/not-found.php
RewriteCond %{REQUEST_METHOD} !POST
RewriteCond %{THE_REQUEST} \s/+(.+?)\.php[\s?] [NC]
RewriteRule ^ /%1 [R=302,NE,L]
RewriteCond %{REQUEST_METHOD} !POST
RewriteCond %{THE_REQUEST} /index\.php [NC]
RewriteRule ^(.*)index\.php$ /$1 [L,R=302,NC,NE]
RewriteCond %{REQUEST_FILENAME} -d [OR]
RewriteCond %{REQUEST_FILENAME} -f
RewriteRule ^ - [L]
RewriteRule ^profile/([^/]+)/?$ profile.php?username=$1 [L,QSA,NC]
RewriteRule ^profile/(followers|friends|saved|stories)/([^/]+)/?$ $1.php?username=$2 [L,QSA,NC] RewriteCond %{REQUEST_FILENAME}.php -f RewriteRule ^(.+?)/?$ $1.php [L]
<IfModule mod_headers.c>
Header set Access-Control-Allow-Origin '*'
</IfModule>
Jawaban
1 anubhava
Aturan tampaknya baik-baik saja meskipun saya telah melihat di beberapa server web yang %{REQUEST_FILENAME}.php
tidak berfungsi dengan baik karena masalah resolusi nama file.
Bisakah Anda mencoba mengubah aturan itu menjadi ini:
RewriteCond %{DOCUMENT_ROOT}/$1.php -f RewriteRule ^(.+?)/?$ $1.php [L]
Kiat Pemilik Anjing yang Bermanfaat: Mengapa Penting untuk Membiarkan Anjing Anda Mengendus di Jalan
Jana Duggar: Semua yang Dia Katakan Tentang Cinta dan Jendela 5 Tahunnya untuk Menemukan 'Yang Satu'