【问题标题】:htaccess mod_rewrite with trailing slashes issuehtaccess mod_rewrite 带有斜杠问题
【发布时间】:2016-07-14 03:05:24
【问题描述】:

我想知道是否有人可以提供帮助?基本上我有一套 mod_rewrite 规则,它们都工作得很好,除非我在 URL 的末尾加上一个斜杠,它会发疯。仍然显示页面(有时),但不包括所有 CSS、JS 等,因为当有斜杠时路径会混乱。解决它的唯一方法是放置一个我非常想避免的 BASE 标签,因为它会带来一系列问题。我的 htaccess 有问题吗?我只需要它忽略尾部的斜杠。

Options +FollowSymLinks
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^resetpassword/([^/.]+)/?$ resetPassword.php?resetCode=$1 [L]
RewriteRule ^activate/([^/.]+)/?$ activateAccount.php?ACTCode=$1 [L]
RewriteRule ^dashboard/?$ dashboard.php [NC,L]
RewriteRule ^login/?$ login.php [NC,L]
RewriteRule ^register/?$ register.php [NC,L]
RewriteRule ^messages/inbox/??$ messagesInbox.php [NC,L]
RewriteRule ^messages/archive/??$ messagesArchive.php [NC,L]
RewriteRule ^messages/??$ messagesInbox.php [NC,L]

【问题讨论】:

    标签: mod-rewrite


    【解决方案1】:

    这可能不是一个好的解决方法,因为在任何情况下您都会切换“目录”级别(例如在messages/inbox 中)。

    最常见的解决方案是使用绝对路径来引用 CSS、图像等:

    <link rel="stylesheet" href="/css/styles.css">
    

    或拥有一个包含 Web 根目录的 PHP 变量:

    <link rel="stylesheet" href="<? echo $webroot; ?>/css/styles.css">
    

    这两种方法都比使用 base 标记或执行一些基于 .htaccess 的重定向恶作剧要好得多。

    【讨论】:

    • 同意,这些文件实际上是在根目录下,它只是看起来像目录,使它看起来“漂亮”。我已经为所有包含设置了绝对路径,但由于某种原因,当我放一个斜杠时它们会吓坏。示例:URL localhost/project/login - WORKS URL localhost/project/login/ - 现在所有包含都已更改为查看 LOGIN 目录
    • 那么你的做法有问题。你能展示一个代码示例吗?
    猜你喜欢
    • 1970-01-01
    • 2011-06-28
    • 2023-03-19
    • 1970-01-01
    • 1970-01-01
    • 2011-05-15
    • 1970-01-01
    • 1970-01-01
    • 2010-09-14
    相关资源
    最近更新 更多