htaccess переписать строку запроса не работает, как ожидалось - PullRequest
0 голосов
/ 04 мая 2018

У меня в htaccess есть следующее

RewriteEngine on
RewriteCond %{QUERY_STRING} (^|&)id=3($|&)
RewriteRule ^user/members/profile\.php$ /user/members/profile/id/3?&%{QUERY_STRING}

RewriteCond %{THE_REQUEST} /([^.]+)\.php [NC]
RewriteRule ^ /%1 [NC,L,R]
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ^ %{REQUEST_URI}.php [NC,L]

Я хочу, чтобы правила перезаписи делали две вещи:

  • Удалить .php
  • изменить пользователя / members / profile.php? Id = 3 на user / members / profile / id / 3

строка запроса перенаправляется в user / members / profile / id / id = 3? Id = 3

Помощь!

Ответы [ 2 ]

0 голосов
/ 04 мая 2018

Попробуйте с ниже,

RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^(.*)$ $1.php [L]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^user/members/profile/id/([0-9]+)/?$ user/members/profile.php?id=$1 [NC,L]
0 голосов
/ 04 мая 2018

Таким образом, вы должны сопоставить шаблон с регулярным выражением, примерно так:

RewriteEngine on    
RewriteRule    ^user/members/profile/id/([0-9]+)/?$    user/members/profile.php?id=$1    [NC,L]

следует перенаправить user/members/profile.php?id=3 на user/members/profile/id/3

Как я уже упоминал ранее, вы можете найти подробное объяснение здесь . Добавление отдельных правил будет утомительным, но может помочь в использовании PHP-фреймворка, который уже имеет лучшие URL, такие как Laravel или Symfony.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...