【问题标题】:Get id aswell as page name using htaccess使用 htaccess 获取 id 和页面名称
【发布时间】:2015-06-11 12:53:49
【问题描述】:

我目前有一个我重写的 htaccess 文件 domain.com/index.php?page=homedomain.com/home

我的整个 htaccess 看起来像这样:

RewriteEngine On

RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s/+index\.php\?page=([^\s&]+) [NC]
RewriteRule ^ /%1? [R=301,L,NE]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.+)$ /index.php?page=$1 [L,QSA]

我正在尝试做的也是从 url 获取 &id= 所以 index.php?page=home&id=5 将被重写为 /home/5.

我遇到的另一个问题是我无法打开其他目录中的文件,例如图像目录。当我打开图像目录时,我得到了我为该站点设置的 404 页面,因为它不是一个页面,它正在尝试将 images/imagefile.jpg 作为一个页面读取。

【问题讨论】:

    标签: .htaccess mod-rewrite


    【解决方案1】:

    只需在第一个条件之前添加:

    RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s/+index\.php\?page=([^\s&]+)&id=([^\s&]+) [NC]
    RewriteRule ^ /%1/%2? [R=301,L,NE]
    

    关于作为页面打开的图像,不应该是这种情况 - 您的 .htaccess 条件会阻止这种情况发生。您需要确保您请求的文件存在于 images 目录中 - 如果不存在,请求将被转发到 index.php。还要确保没有其他 .htaccess 文件干扰 - 尽管我怀疑您是否属于这种情况。

    可能是您引用了与当前请求相关的图像。因此,例如,如果您有<img src="images/something.png>,而当前页面是/services/something,它将尝试请求/services/images/something,这不是您想要的。

    要解决此问题,请在 img 标记 (<img src="/images/something.png>) 中添加斜杠,或相应地设置 base 标记 (<base href="/">)。

    【讨论】:

    • 感谢您的回复。我在第一个条件之前添加了这个,但同样的事情发生了。当我转到 domain.com/home/5 时,我被发送到 404 错误页面。但是 domain.com/home&id=5 就像我想要的那样工作。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多