.htaccess получить перенаправление переменной, приводящее к внутренней ошибке сервера 500 - PullRequest
0 голосов
/ 05 августа 2020

Я прочитал другие сообщения, относящиеся к этой топи c, но все еще не нашел своего решения.

Мой .htaccess выглядит следующим образом:

RewriteEngine On
Options +FollowSymLinks

RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)/$ /$1 [L,R]

ErrorDocument 404 https://website.com/page/404

# browser requests PHP
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /([^\ ]+)\.php
RewriteRule ^/?(.*)\.php$ /$1 [L,R=301]

RewriteCond %{THE_REQUEST} ^.*/index
RewriteRule ^(.*)index /$1 [R=301,L]

# check to see if the request is for a PHP file:
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^/?(.*)$ /$1.php [L]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule .*[^/]$ %{REQUEST_URI}/ [L,R]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{DOCUMENT_ROOT}/$1\.php -f [NC]
RewriteRule ^profile/([0-9a-zA-z_-]+) profile.php?username=$1 [L,QSA,NC]

Когда Я перехожу к https://website.com/page/profile/name/ Я получаю внутреннюю ошибку сервера 500.

Другие условия, похоже, работают правильно, но, в частности, это не так.

1 Ответ

0 голосов
/ 05 августа 2020

Это не может работать:

RewriteRule ^profile/([0-9a-zA-z_-]+) profile.php?username=$1 [L,QSA,NC]

вы должны определить переменную с помощью этого: (. *)

RewriteEngine on
RewriteBase "/"
RewriteCond %{HTTP_Host}          "!^$" [NC]
RewriteRule "^profile/(.*).php$"   "profile.php?username=$1"       [NC,L,QSA]

после этого вы можете проверить регулярное выражение.

...