【问题标题】:Url Rewrite problem: Cannot access my session and images from my re-written url网址重写问题:无法从我重写的网址访问我的会话和图像
【发布时间】:2026-01-02 03:10:01
【问题描述】:

我在我的网站上使用了这条规则:

<IfModule mod_rewrite.c>
   Options +FollowSymlinks
    Options -Multiviews
    RewriteEngine on
    RewriteBase /

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

    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^([^/]+)/?$ employers/page.php?page=$1 [L]
</IfModule>

当一个人登录网站时,它只在 /employers/ 目录中设置一个会话。这意味着只有该目录中的文件才能访问会话。

现在将网址从http://example.com/name 重写为http://example.com/employers/page.php?page=$1,

  1. 我无法再次访问我的会话
  2. 在雇主文件夹中,我有一个文件夹 - logos,现在我无法从 page.php 访问 logos/pic.jpg(这是 url 重写的版本)。它仍然从根目录查看页面。

我认为这是一个重写基础问题,那么我该如何修改它才能很好地解决这个问题,并且不会影响可能遵循的其他规则。

谢谢

编辑

这是我的会话设置:

session_start();
session_set_cookie_params ( $this->sessiontimeout, $this->subdomain, $this->website, 0, 1 );
//i want the session to be available only to files in a particular folder
ini_set('session.use_only_cookies', 1);

【问题讨论】:

    标签: php apache redirect url-rewriting


    【解决方案1】:

    对于图片,您必须将它们添加为/employers/logos/pic.jpg

    至于你使用它的会话非常错误。
    使用一些代码逻辑检查权限,而不是笨拙的 HTTP 请求。

    让您的会话随处可用,但仅在特定文件夹中的文件中检查这些会话

    【讨论】:

    • 我没有使用默认设置,因为我希望会话仅在文件夹中可用。请检查我的编辑以获取详细信息。谢谢
    【解决方案2】:

    在您的页眉中添加基本网址,例如 http://example.com/mysite 在您的 head 标签之间。不要将 www 放在你的基本 url 中。这是你的页面将开始加载的地方

    【讨论】:

    • 它可能看起来与会话无关,但是当你使用重写规则时它会影响你的会话。所以你必须设置你的基本 url,这样当你使用重写规则时什么都不会改变..你的网址就可以了。