htaccess clean-urls $_GET пусто

У меня есть следующий URL:

http://www.domain.gr/add-event?state=3cb7a28b14112d3f3ecada3d6915ac5f&code=AQAZeWtJgz1ZYWvsorRPiMRetkNhnU3NrQ9KYzIRkogUpg6IPHCkFCAWMBUYGYtulfWnr5JHWs2GbrBUAp89pVLStyKs_rer2r14yLI6qdByoqEv1TtHGK4TPzdLFRTgXZEzPEUyk9ixYQfdmZid0dRdTfVXDPqniCKnu8RHQb1ErRDezsdI2CcYsTxofe_wwtZYVD3d4r9VtlANrGn_klP1#_=_ 

Мой RewriteRule отлично работает с URL-адресами, такими как http://www.doamin.gr/news/date/title-of-article устанавливающими "новости" как $_GET['page'] и $_GET['request'] в '/date/title-of-article'Мой htaccess имеет следующий код для предоставления чистых URL:

RewriteCond %{REQUEST_FILENAME} !-f
#RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^/]*)(.*)$ /index.php?page=$1&request=$2 

С учетом вышесказанного url $_GET устанавливается следующим образом:

$_GET['page'] = 'add-event'; $_GET['request'] = ''; // пусто

Как я должен изменить reqriteRule, чтобы получить оставшуюся часть URL в этом случае?(Не путая мои чистые URL).

1 ответ

Ваш первый подшоу ([^/]*) это жадный шаблон. Это означает, что выражение будет соответствовать максимально возможной подстроке входной строки (и поскольку выражение соответствует всему, кроме / символ, он будет соответствовать всей строке - впоследствии, второй подшаблон не будет ничего соответствовать).

Вы можете пометить подшаблон как не жадный или ленивый (т.е. ([^/]*?)), но тогда он будет соответствовать только /персонаж. Вы можете изменить шаблон, чтобы он соответствовал всему, вплоть до начала части запроса URL: ^([^/]*?)\?

Другие вопросы по тегам