Как вы игнорируете части URL-адреса с помощью Mod Rewrite?

#apache #.htaccess #mod-rewrite

#apache #.htaccess #mod-перезапись

Вопрос:

Я использую Mod Rewrite для создания привлекательных URL-адресов. Я пытаюсь понять, как можно игнорировать части URL-адреса?

Например, мой исходный URL-адрес был: /file.php?token=771736eb78bc3b6f96d5c066069567c0c219bf65/

И я написал код Mod Rewrite, чтобы превратить это в: /file/771736eb78bc3b6f96d5c066069567c0c219bf65/

 RewriteEngine On
RewriteRule ^file/([^/]*)$ /file.php?token=$1 [L]
 

Тем не менее, я хотел бы получить URL-адрес, подобный:
/file/771736eb78bc3b6f96d5c066069567c0c219bf65/random-bits-here/

Случайные биты в конце не служат никакой цели (кроме украшения). Как мне указать Mod Rewrite игнорировать эту часть URL-адреса?

Ответ №1:

Просто настройте свое регулярное выражение следующим образом

 RewriteRule ^file/([^/] )/?(.*)$ /file.php?token=$1 [NC,L]
 

Ответ №2:

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

 RewriteEngine On
RewriteRule ^file/([^/]*)/([^/]*)/$ /file.php?token=$1 [L]
 

Или, если вы хотите, чтобы он был передан вашему скрипту.:

 RewriteEngine On
RewriteRule ^file/([^/]*)/([^/]*)/$ /file.php?token=$1amp;extra=$2 [L]
 

Ответ №3:

Просто не указывайте $ знак, который указывает конец строки (путь):

 RewriteEngine On
RewriteRule ^file/([^/]*) /file.php?token=$1 [L]