网站有一个现有系统(我们称之为 mysite ) 并且客户要求输入magento。
我的目录结构如下:
ROOT
-index.php (this is the app's main controller)
-.htaccess
/blog (runs wordpress)
/assets (current system's media folder)
/magento (this is where all magento files go)
问题是,如果我设置了magento并在安装中指定基本网址为http://example.com
,则magento会加载 mysite 。
让我别无选择,只能设置magento,基本网址设置为http://example.com/magento/
,并且运行完美。
然而,客户希望我感到地狱,并要求我在URL中隐藏magento。
我并不精通.htaccess,我只知道简单的重写代码,因此我尝试将以/magento
开头的任何HTTP请求转发到 magento 文件夹,并提出:
RewriteCond %{REQUEST_URI} !^/magento(.*)
RewriteRule (.*) /magento/$1 [L]
当我认为它正常工作时, mysite 链接全部变得无法访问并转发到显示404页面的magento系统。
那么,嗯,我可以请求帮助如何构建.htaccess来隐藏URL上的/magento/
而不影响当前系统又名 mysite 吗?
答案 0 :(得分:3)
因为你的webroot上有现有的应用程序,所以你无法使用 nothing 来逃避:
### webroot/.htaccess
RewriteRule ^whatiwanttouseinsteadofmagento/(.*)$ magento/$1 [L]
答案 1 :(得分:1)
从我看到问题的方法来看,您将无法完全隐藏magento并同时使用您的网站。
如果您希望Magento位于公共文件夹的根目录中,您应该将virtualHost指向您的magento安装,但这会让您的博客和主控制器退出公共视图。这与将.htaccess中的所有调用重定向到magento文件夹所做的大致相同。
我建议将magento名称更改为更多匿名,例如“shopping”或“cart”,并记住,就安全性而言,文件夹重命名优于.htaccess文件。性能
答案 2 :(得分:1)
让我们来看看:
RewriteCond %{REQUEST_URI} !^/magento(.*)
所以我们说条件是什么不是/magento(。*),所以除了那个目录之外的一切?这将重定向所有内容,包括您的博客,资产和任何其他目录。
如果不指定需要重定向到magento目录的每个文件,那么实际上没有简单的方法。我想你可以重定向任何不包含“/”的文件,并以扩展名.php结尾到magento目录。这样只有根网站目录中的文件才会重定向到magento,但是如果你在magento目录中使用了其他目录,你仍然需要为它们添加单独的规则。
答案 3 :(得分:0)
这个答案来得很晚但我想你想要像
这样的东西RewriteCond %{REQUEST_URI} !^/(blog|assets|magento)(.*)$
RewriteRule ^(.*)$ /magento$1 [L]