мод перезаписывает URL с двумя переменными

#php #.htaccess #mod-rewrite

#php #.htaccess #мод-перезапись

Вопрос:

Я хочу переписать post.php?id = 1 amp; title =test в post / 1 /test

У меня есть этот код:

 RewriteRule ^post/([^/] )/([^/] )/?$ post.php?id=$1amp;title=$2 [L,QSA]
  

Это работает, только если я переименую post.php ссылки на / post в моем php-файле. Я хочу переписать URL, чтобы мне не нужно было редактировать какие-либо ссылки.

Аналогично приведенному ниже:

 RewriteCond %{THE_REQUEST} s/ (post).php[?/s] [NC]
RewriteRule ^ %1 [R=301,L]

RewriteRule ^(post)/?$ $1.php [L]
  

Ответ №1:

Вы можете использовать:

 # external redirect from actual URL to pretty one
RewriteCond %{THE_REQUEST} s/ post.php?id=([^amp;] )amp;title=([^samp;] ) [NC]
RewriteRule ^ /post/%1/%2? [R=301,L,NE]

# internal forward from pretty URL to actual one
RewriteRule ^post/([^/] )/([^/] )/?$ post.php?id=$1amp;title=$2 [L,QSA,NC]
  

Но неправильно говорить «мне не нужно редактировать какие-либо ссылки». Потому что это метод исправления старых ссылок, на которые уже ссылаются, а не для того, чтобы помешать вам изменять свой код на ваших страницах. Потому что HTML-код все еще содержит плохие ссылки…