【问题标题】:Hide directory name from URL从 URL 中隐藏目录名称
【发布时间】:2013-08-21 15:21:15
【问题描述】:

我只想从 URL 中隐藏目录名称。

发件人example.com/dirname/somepage 收件人example.com/somepage

该代码对我不起作用,我可能犯了一些错误

RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule    /  /dir/$1    [L]

我已经在 .htaccess 中有这个(隐藏 php 扩展名)

RewriteEngine On
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteCond %{REQUEST_URI} !/$
RewriteRule (.*) $1\.php [L]

【问题讨论】:

    标签: .htaccess url-rewriting


    【解决方案1】:

    这应该是您完整的 .htaccess:

    Options +FollowSymLinks -MultiViews
    # Turn mod_rewrite on
    RewriteEngine On
    RewriteBase /
    
    RewriteCond %{REQUEST_FILENAME}.php -f
    RewriteCond %{REQUEST_URI} !/$
    RewriteRule (.*) $1\.php [L]
    
    RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s/+dirname/([^\s]+) [NC]
    RewriteRule ^ %1 [R=301,L]
    
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule (?!^dirname/)^(.*)$ /dirname/$1 [L,NC]
    

    【讨论】:

    • 这是最常见的问题。对于 css、js、图像等,请确保使用以 /http:// 开头的绝对路径
    • 这正是我所拥有的:<link rel="stylesheet" href="http://mydomain.com/css/main.css"> 即使我的 css 文件就在那里,它也无法加载。在不改变 .htaccess 的情况下使用相同的路径非常完美。所以我猜重写规则有问题。
    • 它有效,谢谢!根本不需要改变任何路径。我有两个小问题 1)我的联系表格在带有 index.php 控制器的目录(“/contact”)中,并且该 URL 保持不变。你有什么主意吗? 2)旧的网址呢?它们还存在,我不知道这是否可以让我们说搜索引擎(重复内容)?
    • 好的,就是这样!伙计,我真的很感谢你花时间帮助我。非常感谢,继续努力。
    • 哇,谢谢。我花了几个小时才找到这个很棒的解决方案。
    猜你喜欢
    • 2016-09-22
    • 2017-05-06
    • 2014-07-08
    • 1970-01-01
    • 2014-06-23
    • 2014-04-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多