【问题标题】:URL Rewriting with / or not使用 / 或不使用 URL 重写
【发布时间】:2014-10-15 05:05:21
【问题描述】:

我正在尝试修复此警告:

尽可能避免使用文件扩展名......考虑将 URL 重写作为创建适当 URL 的有效且透明的方法

我在我的 .htaccess 文件中添加了这个:

RewriteEngine on 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME}\.html -f 
RewriteRule ^(.*)$ $1.html

它在 example.com/page 上运行良好,但在 example.com/page/ 上出现内部服务器错误 有什么想法吗?

【问题讨论】:

    标签: regex apache .htaccess mod-rewrite


    【解决方案1】:

    更改您的正则表达式以允许可选的尾部斜杠:

    RewriteEngine on
    
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{DOCUMENT_ROOT}/$1\.html -f [NC]
    RewriteRule ^(.+?)/?$ /$1.html [L]
    

    【讨论】:

    • 感谢您的回答。现在 / 工作,但 html 页面出现时没有样式(CSS 等)。
    • 对于 css/js,只需在 css、js、图像文件中使用绝对路径,而不是相对路径。这意味着您必须确保这些文件的路径以http:// 或斜杠/ 开头。您可以尝试将其添加到页面的 HTML 标头中:<base href="/" />,以便从该 URL 而非当前 URL 解析每个相对 URL。
    • 做得很好.. 感谢 anubhava!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-28
    • 2012-01-25
    相关资源
    最近更新 更多