【问题标题】:hide file name extensions in url?在url中隐藏文件扩展名?
【发布时间】:2013-02-13 13:29:52
【问题描述】:

可以帮我吗?我想在我的网站的 url 中隐藏文件扩展名。

所以一个例子是 http://www.mysite.com/home.php http://www.mysite.com/control.php

会改为显示为 http://www.mysite.com/home http://www.mysite.com/control

我一直在研究这个,发现这个代码似乎隐藏了 url 中的文件扩展名,但现在我的链接无法正常工作并且我收到 404 错误。我认为我需要修改我的站点链接路径或类似的东西。

谁能告诉我我需要做什么,这是我在我的 .htaccess 中使用的代码:

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^([^/]+)/$ $1.php
RewriteCond %{THE_REQUEST} ^[A-Z]+\ /([^/]+/)*[^.]+\.php(\?[^\ ]*)?\ HTTP/
RewriteRule ^(([^/]+/)*[^.]+)\.php$ http://www.mysite.com/$1 [R=301,L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !(\.[a-zA-Z0-9]{1,5}|/)$
RewriteRule (.*)$ http://www.mysite.com/$1/ [R=301,L]

【问题讨论】:

    标签: .htaccess


    【解决方案1】:

    如果您想隐藏所有扩展名(不仅仅是 .php、.html),请使用:

    Options +FollowSymLinks +MultiViews
    

    在您的 httpd.conf 或 .htaccess 中

    【讨论】:

    • 您需要先删除所有现有规则并仅尝试使用上述行。还要确保确实启用了 .htaccess。最后只是为了让您在我们的网络服务器上使用这个经过全面测试的解决方案。
    【解决方案2】:

    Google 可以在堆栈之前提供帮助 :)

       RewriteEngine on
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME}\.html -f
    RewriteRule ^([^/]+)/$ $1.html 
    
    # Forces a trailing slash to be added
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_URI} !(\.[a-zA-Z0-9]{1,5}|/)$
    RewriteRule (.*)$ /$1/ [R=301,L]
    

    http://eisabainyo.net/weblog/2007/08/19/removing-file-extension-via-htaccess/ 也看看 Making a rewriterule remove .php extension?

    【讨论】:

    • 如果你打电话。 R/control/ 它将加载受控.html
    • 我已经添加了一个链接到以前的问题,像这样有一个公牛
    猜你喜欢
    • 2018-03-14
    • 1970-01-01
    • 1970-01-01
    • 2011-09-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-29
    • 2016-03-27
    相关资源
    最近更新 更多