【问题标题】:how to modify this mod rewrite into the url I want?如何修改这个mod重写成我想要的url?
【发布时间】:2014-01-30 09:06:50
【问题描述】:

我实际上得到了一个答案,如果我想将我的网址从 www.mydomain.com/laravel4/public/posts 更改为 www.mydomain.com/posts

这就是我与.htaccess 的关系

RewriteEngine On

RewriteRule !^laravel4/public/ /laravel4/public%{REQUEST_URI} [L,NC]

但是我还有另一个问题,如果我希望 url 是 www.mydomain.com/laravel4/posts 会公开我应该修改什么?我认为在上面的代码中取出 laravel4 会起作用,但似乎并不容易:(

【问题讨论】:

    标签: php apache .htaccess mod-rewrite laravel


    【解决方案1】:

    理想情况下,您应该将 Laravel 安装移出文档根目录,只需将公用文件夹的内容移至文档根目录并相应地编辑 index.php 和 bootstrap/paths.php,或者将文档根目录设置为Laravel 的 public 文件夹,如果你打开支持票,一些主机会为你更改文档根目录。

    但这并不总是可行的,具体取决于您的主机,大多数人会告诉您去寻找更好的主机,但同样,这并不总是一种选择。

    下面是一个 .htaccess 示例,您可以使用该示例将所有 URL 重写到 Laravel 的 public/index.php,但请注意,这不是设置 Laravel 的一种非常安全的方法,任何人都可能访问您的任何文档根目录中存在的配置和其他文件,从而暴露您的数据库密码和用于加密的密钥。

    RewriteEngine On
    RewriteRule ^ laravel4/public/index.php [L]
    

    根据要求更新

    RewriteEngineOn
    RewriteRule ^laravel4/.* laravel4/public/index.php [L]
    

    【讨论】:

    • 啊,我相信我明白你的意思。但是人们不需要域密码来打开配置和东西吗?顺便说一句,重写器有助于取出 laravel4/public/index.php 但我想知道我是否只想取出 public/index.php 并保留 laravel4/posts 或 laravel4/something
    • 知道站点 URL 的任何人都可以访问您放入文档根目录的任何内容。我的意思是你可以使用 htpassword 之类的东西,但如果某处配置错误,它仍然可以访问。将其完全移出文档根目录更安全,除非您对服务器本身具有某种访问权限,否则无法访问它。请参阅我的更新答案以将 laravel4 保留在 URL 中
    【解决方案2】:

    你可以使用这条规则:

    RewriteEngine On
    
    RewriteCond %{REQUEST_URI} !^/laravel4/public(/|$) [NC]
    RewriteRule ^laravel4/(.*)$ /laravel4/public/$1 [L,NC]
    

    【讨论】:

    • 以上.htaccess 的位置是什么? laravel 目录中是否有任何 .htaccess 文件?
    • .htaccess 上面的位置什么都不是......它已经在域的根目录中,并且在 laravel 目录中有一个公用文件夹,在该公用文件夹中有一个 .htaccess 文件。我尝试删除 .htaccess 文件,但仍然无法正常工作
    • 那么当你输入http://www.mydomain.com/laravel4/posts时会发生什么?是404吗?您的浏览器中的确切错误消息是什么> 此 .htaccess 是否与 laravel 目录处于同一级别? /laravel/ 中也有 .htaccess 吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多