MOD_REWRITE & PHP $ _SERVER ['REQUEST_URI'] ISSUE - PullRequest
1 голос
/ 26 января 2012

** ОБНОВЛЕННЫЙ ПРИМЕР **

Например, предположим, что URL моего сайта имеет вид "http://www.mydomain.com".

Сайт использует переменные $ _GET для определения страниц, содержимого и т. Д.

Итак, допустим, я нахожусь на http://www.mydomain.com/cms/index.php?p=about-us

. Это будет страница о нас в CMS.

Если я здесь выведу $ _SERVER ['SERVER_NAME'], я получу "http://www.mydomain.com" Если я получаю $ _SEVER ['REQUEST_URI'], я получаю "cms / index.php? P = about-us".

Так, с кодом ниже, "$ lastPage" даетя: "http://www.mydomain.com/cms/index.php?p=about-us", это именно то, что я хочу.

НО, как только я отправляю форму, обновляю содержимое и т. д., меня перенаправляют в файл CSS или путь к изображению.

Это ТОЛЬКО происходит, когда у меня есть правило перезаписи в файле htaccess, которое мне нужно для того, чтобы иметь красиво отформатированные URL.


ОРИГИНАЛЬНЫЙ ВОПРОС

Язапуск веб-сайта в CMS, и в CMS существует переменная «последняя страница», которая создается следующим образом:

$lastPage="";
$lastPage .= $_SERVER["SERVER_NAME"];
$lastPage .= $_SERVER["REQUEST_URI"];
$_SESSION['theLastPage'] = $lastPage;

Переменная используется для перенаправления пользователей на последнюю страницу.они были включены после обновления контента, отправки форм и т. д.

Используется так:

<script>window.location="<?php echo $_SESSION['theLastPage']; ?>"</script>

Это работает именно так, как я хочу ...

ДоЯ добавляю это правило перезаписи в мой файл htaccess:

RewriteRule ^([^/]+)\.html$ index.php?p=$1 [L]

Как только эта строка появляется в моем файле htaccess, переменная перенаправления прерывается и направляет пользователя в файл css или изображение.Правило перезаписи работает должным образом, и оно существует для того, чтобы использовать красиво отформатированные URL-адреса по всему сайту.

Я пытался устранить это в течение последних нескольких дней, но безуспешно.

Если бы кто-нибудь мог пролить немного света на это для меня, это было бы здорово.

Спасибо!

ФАЙЛ HTACCESS **

Я не могу полностью объяснить проблему, потому что я не понимаю, почему это происходит.

Вот мой текущий файл htaccess, здесь есть несколько различных правил переписывания, но первоеодин - тот, который вызывает проблему.

Options -Indexes
Options -MultiViews +FollowSymLinks

RewriteCond %{HTTP_HOST} !^www.yoursafetyexperts.com$
RewriteRule ^(.*)$ http://www.yoursafetyexperts.com/$1 [R=301]

<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteBase /

    RewriteCond %{REQUEST_URI} ^/cms/
    RewriteRule ^(.+) - [PT,L]

    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^([^/]+)\.html$ index.php?p=$1 [L] // If I remove this rule, my redirect works properly

    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^([^/]+)/([^/.]+)/([^/.]+)\.php$ index.php?p=$1&post_id=$2&post=$3 [L]

    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^([^/]+)/([^/.]+)/([^/.]+)/$ index.php?p=$1&catId=$2&catName=$3 [L]
</IfModule>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...