Как Rewrite URL с domain.com?p=1 в domain.com/1

Статус
В этой теме нельзя размещать новые ответы.
Однозначно браузер. Даже при выключеном интернете (то есть к серверу доступа нет!) запрос вида Для просмотра ссылки Войди или Зарегистрируйся моментально превращается в Для просмотра ссылки Войди или Зарегистрируйся
 
Как переписать урл вида Для просмотра ссылки Войди или Зарегистрируйся
в урл Для просмотра ссылки Войди или Зарегистрируйся

У меня домен вида Для просмотра ссылки Войди или Зарегистрируйся
А это не подходит?
Код:
RewriteEngine On
RewriteRule ^([0-9]+)(/?)+$ index.php?p=$1 [L]
 
А это не подходит?
Код:
RewriteEngine On
RewriteRule ^([0-9]+)(/?)+$ index.php?p=$1 [L]

Потестил - работает и так Для просмотра ссылки Войди или Зарегистрируйся и так Для просмотра ссылки Войди или Зарегистрируйся

Вот только на всякий пожарный, если понадобятся не только числа, но и латиница, можно чуток проапгрейдить код:

PHP:
RewriteEngine on
RewriteRule ^.htaccess$ - [F]

RewriteRule ^([0-9a-z]+)(/?)+$ index.php?p=$1 [L]
 
alexz15
А что ты имеешь в виду этой конструкцией?
PHP:
(/?)+
 
Странная она. С одной стороны, вроде бы она делает тоже, что и (/*). Но отличие в том, что в твоем варианте если стоит несколько слешей ///, то она захватит в обратную ссылку только последний.

Каким образом в url могут быть несколько слешей на конце, мне не понятно.
 
Странная она. С одной стороны, вроде бы она делает тоже, что и (/*). Но отличие в том, что в твоем варианте если стоит несколько слешей ///, то она захватит в обратную ссылку только последний.
Каким образом в url могут быть несколько слешей на конце, мне не понятно.

Насколько я понимаю, разница еще и в том, что конструкция (/?)+ подразумевает, что слэш на конце url может быть, может не быть... Это круто, поскольку заключительный слэш очень часто создает проблемы при написании дирректив для .htaccess

А (/*) подразумевает, что слэш должен быть по-любому...
 
Sargej_Saint
тут ты не прав.

? - 0 или 1 совпадение
+ - 1 или много
* - 0 или много

таким образом, достаточно просто /?, или взять это в скобки, если надо захватить этот слеш (только зачем?).
если же нам надо предусмотреть, что там может не быть вообще слеша, или их может быть несколько, тогда /*.
/+ как раз укажет, что слеш должен быть обязательно, да еще и, возможно, несколько раз.

Но зачем указывать и вопрос и плюс одновременно —*ума не приложу. (Причем встречается уже в нескольких темах на форуме, и никто из предлагавших не может сказать точно зачем такое нужно.
 
Но зачем указывать и вопрос и плюс одновременно —*ума не приложу. (Причем встречается уже в нескольких темах на форуме, и никто из предлагавших не может сказать точно зачем такое нужно.
Возможно, конструкция
PHP:
(/?)+
подразумевает, например, возможность http://site.com/$1/$2/$3/ и так до бесконечности... при том, что одна или несколько переменных может быть null, т.е. http://site.com/$1/// Так и может возникнуть несколько слешей на конце...
 
дело в том, что в скобках подразумевается только наличие или отсутствие слеша. никаких других символов регулярка там не подразумевает.

Скорее всего это опечатка.
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху