【发布时间】:2018-08-03 18:19:46
【问题描述】:
我有一个后端和前端分开的 yii 应用。我正在尝试制作友好的网址。 我尝试了一些在线工具,但无法正确使用 所以我想要这个网址
-
http://mydomain.lc/abs/admin/some/crazy/urls(for example some/crazy/urls can be admin/index)
将被改写为:
-
http://mydomain.lc/abs/backend.php/some/crazy/urls(because this url works directly)
我也有前端站点,但它们都在同一个项目中,所以它们共享 .httacess。 前端 .htaccess 的规则是: 这个网址:
-
http://mydomain.lc/abs/some/crazy/urls(some can not be admin here, so we can differentiate btw fron and back end)
应该是
http://mydomain.lc/abs/index.php/some/crazy/urls
我有:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^abs/admin/?(.*?)$ abs/backend.php?url=$1 [QSA,L]
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(?!abs/admin\/)(.*?)$ abs/index.php?url=$1 [QSA,L]
</IfModule>
上面的脚本不工作。 根目录在 abs 文件夹下,.htaccess 在根目录下
【问题讨论】:
-
哪个不工作?第一个还是第二个 RewriteRule?或者两者兼而有之?
-
Root 应该是
http://mydomain.lc/而不是http://mydomain.lc/abs/如你所说。请解释并确认.htaccess文件在哪里。 -
root 在这里:
http://mydomain.lc/abs/,因为我不欠我放它的地方,所以项目位于(开始点 index.php)下 abs 和 .htaccess 在那里,但不是直接在 http://mydomain.lc / 谢谢 -
@OlafDietsche 两者 :(。但是如果我将项目直接放在 mydomain.lc 下并从规则中删除所有 abs 就可以了。但是我在生产服务器中有 abs :(
-
例如,在您的规则中,替换 URL 将是
backend.php?url=/some/crazy/urls,但在您的示例中,您有backend.php/some/crazy/urls。那么,它是哪一个?
标签: apache .htaccess url-rewriting