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: ^([^/]*?)\?