从url中删除目录名称

时间:2016-07-04 10:02:03

标签: php .htaccess mod-rewrite lumen

我在Lumen中有一个新项目需要部署到Staging服务器,我已经完成了。我正面临从URL中删除目录名称的问题。我的项目目录是这样的:

DIR - ProjectName
   DIR - ProjectName {Lumen files inside this directory}
     DIR - app
     DIR - bootstrap
     DIR - database
     DIR - public
     DIR - resources
     DIR - storage
     DIR - tests
     DIR - Vendor

所以目前要查看我的应用程序我需要输入这样的URL:

http://stagingserverdomain.com/ProjectName/ProjectName/public/login

但是我希望我的网址是这样的:

http://stagingserverdomain.com/ProjectName/login

我已经尝试了很多答案,但它不起作用。

2 个答案:

答案 0 :(得分:0)

使用此:

RewriteEngine On
RewriteRule ^Projectname/login$ /ProjectName/ProjectName/public/login [L]

它应该留下以下网址:

http://stagingserverdomain.com/ProjectName/login

答案 1 :(得分:0)

好问题!将此Apache httpd RewriteRule添加到httpd.conf文件中的相应服务器定义中:

RewriteEngine On
RewriteRule ^/(ProjectName)/((?!\1).*)  /$1/$1/public/$2

或者,将此添加到网络服务器根目录的.htaccess文件中,例如,第一个ProjectName目录所在的位置:

RewriteEngine On
RewriteRule ^(ProjectName)/((?!\1).*)   $1/$1/public/$2

或者,将其添加到第一个.htaccess目录(第二个ProjectName目录所在的目录)中的ProjectName文件中:

RewriteEngine On
RewriteRule ^((?!ProjectName).*)    ProjectName/public/$1

或者(这是推荐的行动方案),切换到nginx,然后执行此操作:

location /ProjectName {
    rewrite ^/([^/]+)/((?!\1).*)$   /$1/$1/public/$2;
}

上述代码确保只有在您的网址已经包含ProjectName/ProjectName(使用rewrite前瞻断言时才会发生PCRENGINXApache用于支持regular expressions的库,因此,不会有任何无限重定向循环。

相关问题