#php #.htaccess #url #redirect #http-status-code-404
#php #.htaccess #url #перенаправление #http-status-code-404
Вопрос:
У меня есть ссылка, которая выглядит следующим образом:
https://www.example.com/news/foobar.php?id=14amp;artName=Hello-World
Я хочу, чтобы это выглядело так:
https://www.example.com/news/foobar/14/Hello-World
Это то, что у меня сейчас есть в моем коде .htaccess:
<IfModule mod_speling.c>
CheckSpelling off
CheckCaseOnly off
</IfModule>
Options -MultiViews
RewriteEngine On
RewriteCond %{HTTPS} !on
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L,NE]
RewriteRule ^(news/foobar)/([w-] )/(. ) $1.php?id=$2amp;artName=$3 [QSA,L,NC]
RewriteCond %{DOCUMENT_ROOT}%{REQUEST_URI}.php -f
RewriteRule !.php$ %{REQUEST_URI}.php [QSA,L]
Ссылка на статью выглядит так:
<a href = "https://www.example.com/news/foobar/'.$row['id'].'/'.$row['linkAddress'].'">Article</a>
Откуда из базы данных:
$row['id'] = 14 and $row['linkAddress'] = Hello-World
Когда я перехожу к:
https://www.redicate.com/news/foobar/14/Hello-World
Я получаю ошибку 404- не найден
Если я вместо этого перейду к:
https://www.redicate.com/news/foobar.PHP/14/Hello-World
Веб-сайт загружается, но переменные get отсутствуют, поэтому веб-сайт выглядит неработающим.
Я понятия не имею, что вызывает эту ошибку 404, и я некоторое время работал над этой проблемой, я был бы признателен за любую помощь, которую я мог бы получить, спасибо.
Ответ №1:
Не совсем ваш, но вот урезанный вариант, который работает для меня.
<FilesMatch "^.htaccess">
Order allow,deny
Deny from all
</FilesMatch>
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^/?(.*)/(.*)$ news.php?id=$1amp;artName=$2 [NC,L,QSA]
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule (.*) $1.php [L]
Также убедитесь, что SSL включен, настроен и работает. Надеюсь, это поможет!
Комментарии:
1. Спасибо за код, который помог, но, к сожалению, он не решил проблему для меня. Ссылка перешла со страницы перенаправления 404 на загружаемый сейчас веб-сайт, но параметры отсутствуют, поэтому она выглядит сломанной без указания номера метода получения идентификатора или имени, я продолжу экспериментировать с этим кодом, но спасибо за его предоставление.
2. в foobar.php У меня есть $artID = $ _GET [‘id’]; $ artName = $ _GET [‘artName’]; echo «Идентификатор статьи:» . $ artID; echo «Название статьи:» . $ artName; но в echo ничего не отображается, потому что параметры не задаютсясобранный