Как написать несколько правил переписывания .htaccess? - PullRequest
0 голосов
/ 29 января 2019

У меня есть несколько php страниц, таких как:

http://www.example.com/si/article.php?id=122&nTitle=my-title
http://www.example.com/si/post.php?id=352&pTitle=my-post-title

Я хотел бы переписать их в

http://www.example.com/si/122/my-title
http://www.example.com/si/352/my-post-title

Я пробовал разные вещи в моем файле .htaccess и нетрезультат.Подскажите пожалуйста как заставить работать с несколькими правилами.Если я использую одно правило в .htaccess файле, его работа для одной страницы php, как показано ниже:

RewriteRule ^([\s\w-]+)/(.*)/?$ article.php?id=$1&nTitle=$2 [L,QSA,NC]

Это теперь я попробовал его для нескольких страниц:

<ifModule mod_rewrite.c>
  Options -Indexes
  RewriteEngine on

  RewriteCond %(REQUEST_FILENAME) !-f
  RewriteCond %(REQUEST_FILENAME) !-d
  RewriteRule ^/([\s\w-]+)/(.*)$ /article.php?id=$1&pName=$2 [L,QSA,NC]

  RewriteCond %(REQUEST_FILENAME) !-f
  RewriteCond %(REQUEST_FILENAME) !-d
  RewriteRule ^/([\s\w-]+)/(.*)$ /post.php?id=$1&pName=$2 [L,QSA,NC]

</IfModule>

Может кто-нибудь датьМне совет, как использовать эту функциональность в .htaccess?

Спасибо.

Ответы [ 2 ]

0 голосов
/ 29 января 2019

Прежде всего вы должны проверить свое регулярное выражение, вы можете сделать это там генератор регулярных выражений

Затем в вашем htaccess вы можете поместить свое регулярное выражение следующим образом:

RewriteEngine on
RewriteRule ^/post.php?id=([0-9])&pName=([a-z]+)$    post/$1/$2  [L]
RewriteRule ^/article.php?id=([0-9])&pName=([a-z]+)$    article/$1/$2  [L]

попробуйте шаг за шагом, и вы можете легко отладить.

0 голосов
/ 29 января 2019

Вы можете использовать URL как: (выглядят как отличающиеся друг от друга)

http://www.example.com/arical-si/122/my-title
http://www.example.com/post-si/352/my-post-title

, затем перенаправить на:

<IfModule mod_rewrite.c>
RewriteEngine on 
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?/$0 
RewriteRule ^artical-si/([0-9+/=$]*)/([A-Za-z0-9+/=$]*)$ article.php?id=$1&nTitle=$2 [L]
RewriteRule ^post-si/([0-9+/=$]*)/([A-Za-z0-9+/=$]*)$ post.php?id=$1&nTitle=$2 [L]
</IfModule>
...