Чистая перезапись URL с использованием файла .htacces в apache - PullRequest
0 голосов
/ 25 февраля 2020

У меня есть веб-сайт, где я веду блог ... на своем блоге. php Страница У меня есть сообщения из разных категорий. когда пользователь нажимает на ссылку, она перенаправляется на страницу /blog-details.php с переменной $_GET['title'].

то, что я пробовал

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f

#remove .php from all pages
RewriteRule ^([^\.]+)$ $1.php [NC]

#blog/title-here
RewriteRule ^blog/([A-Za-z0-9-\+]+)/?$ /blog-details.php?title=$1 [NC,L,QSA]

последняя строка дает мне что-то вроде

xyz.com / blog-details? title = hello-world

я хочу достичь

xyz. ru / blog / hello-world

не нравится

xyz.com / blog-details? title = hello-world

спасибо ты с нетерпением жду ответов.

Ответы [ 3 ]

0 голосов
/ 25 февраля 2020

При работе с файлами .htaccess важно учитывать, что вы должны проверить, является ли путь каталогом или файлом, а затем приступить к выполнению своих действий.

Я использовал ваш код, и он работал правильно, но просто добавил проверки -f и -d, чтобы убедиться, что это не влияет на другие страницы.

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f

#remove .php from all pages
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^\.]+)$ $1.php [NC]

#blog/title-here
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^blog/([A-Za-z0-9-\+]+)/?$ /blog-details.php?title=$1 [NC,L,QSA]

Чтобы проверить ваш файл .htaccess и с некоторыми фиктивными URL, я очень рекомендую вам проверить MadeWithLove

https://htaccess.madewithlove.be/

Это позволит вам иметь тестовый входной URL и посмотреть, получите ли вы правильный выходной URL ( фактический URL, который прочитал бы ваш сервер).


Учитывая сказанное, я бы порекомендовал вам изучить маршрутизацию для будущих проектов и саморазвития. Фреймворк, который я бы порекомендовал проверить - это фреймворк без жира (f3) для PHP. В него очень легко войти, вы можете выучить его за 2 дня, и это сэкономит много времени на разработке - содержит маршрутизацию, ORM, глобальные переменные, упрощенные запросы SQL и множество других функций, которые, по сути, сохранят вас PHP разработчик, а не разработчик фреймворка.

0 голосов
/ 25 февраля 2020

используйте метод ниже:

<IfModule mod_rewrite.c>
RewriteEngine on
RewriteRule ^blog/([0-9a-zA-Z_=-]+)$ blog-details.php?title=$1 [NC]
</IfModule>

Затем вы можете получить доступ к заголовку, например, к $ _GET ['title'] на странице.

0 голосов
/ 25 февраля 2020

Я думаю, вы должны взглянуть на маршрутизацию в PHP, вы можете легко построить свою собственную систему маршрутизации.

...