Перезапись URL - проблема с чтением переменной $ _GET - PullRequest
1 голос
/ 30 марта 2012

Я написал правило перезаписи URL для перенаправления URL, например

http://picselbocs.com/projects/helsinki-map-application/{something} to 
http://picselbocs.com/projects/helsinki-map-application/index3.php?pcode={something}.

В заголовке файла index3.php я проверяю, установлена ​​ли переменная $_GET['pcode'], и моя цель - если переменная НЕ установлена ​​(т.е. при попытке доступа к http://picselbocs.com/projects/helsinki-map-application/), перенаправить следующий адрес: http://picselbocs.com/projects/helsinki-map-application/D02081460

К сожалению, перенаправление не происходит. То есть, если значение {something} пусто, я не перенаправлен на http://picselbocs.com/projects/helsinki-map-application/D02081460

Код в файле php:

if (!isset($_GET['pcode'])) {
    header('Location: ./D02081460');    
    exit();
}

И файл .htaccess гласит:

RewriteEngine On
RewriteRule    ^([A-Za-z0-9]+)?$    index3.php?pcode=$1    [NC,L]

Может кто-нибудь сказать мне, что я делаю не так?

Заранее спасибо!

1 Ответ

4 голосов
/ 30 марта 2012

На данный момент pcode будет ВСЕГДА установлен, он просто МОЖЕТ быть пустым, потому что правило всегда будет проходить, и вы получите index3.php? Pcode = {кое-что}, но {кое-что} может быть равно ''.

Так что либо:

RewriteEngine On
RewriteRule    ^([A-Za-z0-9]+)/?$  index3.php?pcode=$1    [NC,L]
RewriteRule    ^.*                 index3.php             [NC,L]

Добавьте аварийное переключение и сделайте группу жадной, чтобы она перестала работать, если ничего не передано. Или измените свой чек на:

if ($_GET['pcode'] == '') {
    header('Location: ./D02081460');    
    exit;
}

Надеюсь, это поможет,

ISE

...