перезапись ссылки .htaccess возвращает ошибку 404

#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 ничего не отображается, потому что параметры не задаютсясобранный