MOD_REWRITE& PHP $ _SERVER ['REQUEST_URI']问题

时间:2012-01-26 16:40:36

标签: php .htaccess mod-rewrite

**更新示例**

例如,假设我的网站网址为“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文件中有重写规则时,才会发生这种情况,为了获得格式良好的网址,我需要这样做。


原始问题

我在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 FILE **

我无法完全解释这个问题,因为我不明白为什么会这样。

这是我当前的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>

0 个答案:

没有答案