首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >正在从URL中删除Public,但允许“Publications”

正在从URL中删除Public,但允许“Publications”
EN

Stack Overflow用户
提问于 2014-01-31 03:51:19
回答 3查看 126关注 0票数 0

我知道这个问题已经被问了一百万次了,但请耐心听我说。我在本地服务器的基目录下使用了一个.htaccess文件:

代码语言:javascript
复制
<IfModule mod_rewrite.c>
    RewriteEngine On

    RewriteRule ^(.*)$ /public/$1 [L]
</IfModule>

这很有效,但只有一个问题。如果我在第一个URL参数中放入任何带有'public‘的内容,它会给我一个404。

所以,如果我有www.test.dev/publications,那么它就是我,因为它的名称中有“public”。我已经进行了彻底的测试,以确保这是一个HTACCESS问题,而且肯定是。如果我将路由命名为www.test.dev/publi,它就可以正常工作,www.test.dev/publi-cations也是如此。

这里有没有人知道允许在.htaccess文件中发布内容?

谢谢!

编辑:我想我应该让你知道,是的,这不是从URL中删除public的正确方法,但我的公司拒绝更改主机,我也没有权限修改站点根目录。

/public/.htaccess

代码语言:javascript
复制
<IfModule mod_rewrite.c>
<IfModule mod_negotiation.c>
    Options -MultiViews
</IfModule>

RewriteEngine On

# Redirect Trailing Slashes...
RewriteRule ^(.*)/$ /$1 [L,R=301]

# Handle Front Controller...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]
</IfModule>
EN

回答 3

Stack Overflow用户

发布于 2014-01-31 04:18:33

.htaccess中尝试一下,它可以在我的localhost中使用http://blog.dev/publications

代码语言:javascript
复制
<IfModule mod_rewrite.c>

    <IfModule mod_negotiation.c>
        Options -MultiViews
    </IfModule>

    RewriteEngine On

    # Redirect Trailing Slashes...
    RewriteRule ^(.*)/$ /$1 [L,R=301]

    # Handle Front Controller...
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^ index.php [L]
</IfModule>
票数 0
EN

Stack Overflow用户

发布于 2014-01-31 04:18:49

要删除urls中的/public/部分,您不必将/public/添加到.htaccess中,您需要将VirtualHost DocumentRoot直接指向该文件夹,这是一个示例:

代码语言:javascript
复制
<VirtualHost *:80>
    ServerName yourdomain.com
    DocumentRoot /var/www/yourdomain.com/public

    <Directory /var/www/yourdomain.com>
        Options Indexes Includes FollowSymLinks MultiViews
        AllowOverride AuthConfig FileInfo
        Order allow,deny
        Allow from all
    </Directory>
</VirtualHost>

然后在你的.htaccess里放一些类似这样的东西:

代码语言:javascript
复制
<IfModule mod_rewrite.c>
    <IfModule mod_negotiation.c>
        Options -MultiViews
    </IfModule>

    RewriteEngine On

    # Redirect Trailing Slashes...
    RewriteRule ^(.*)/$ /$1 [L,R=301]

    # Handle Front Controller...
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^ index.php [L]
</IfModule>
票数 0
EN

Stack Overflow用户

发布于 2014-01-31 05:03:16

试试这个规则:

代码语言:javascript
复制
RewriteEngine On
RewriteRule ^((?!public/).*)$ /public/$1 [L,NC]

更新:建议的/public/.htaccess

代码语言:javascript
复制
Options -MultiViews
RewriteEngine On
RewriteBase /public/

# Redirect Trailing Slashes...
#RewriteRule ^(.*)/$ /$1 [L,R=301]

# Handle Front Controller...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule . index.php [L]
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21466177

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档