kike.htaccess重写几乎可以工作了

kike.htaccess重写几乎可以工作了,.htaccess,cakephp,.htaccess,Cakephp,我的cake 2.2.0应用程序中的重写规则有问题 Mod_rewrite的工作方式如下: myapp.com/listings有效 但cake生成的链接构造了这种类型的URL,这种URL也可以工作,但不会被重写: myapp.com/app/webroot/index.php/listings 我尝试了很多张贴的选项,但似乎没有任何效果 我的apache配置设置如下: <Directory /> Options FollowSymLinks AllowOverri

我的cake 2.2.0应用程序中的重写规则有问题

Mod_rewrite的工作方式如下:

myapp.com/listings
有效

但cake生成的链接构造了这种类型的URL,这种URL也可以工作,但不会被重写:

myapp.com/app/webroot/index.php/listings
我尝试了很多张贴的选项,但似乎没有任何效果

我的apache配置设置如下:

<Directory />
    Options FollowSymLinks
    AllowOverride All
</Directory>

选项如下符号链接
允许超越所有
所有.htaccess文件都是cake安装中的标准文件

Webroot.htacess:

<IfModule mod_rewrite.c>
    RewriteEngine On    
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
     RewriteRule ^(.*)$ index.php [QSA,L]
</IfModule>

重新启动发动机
重写cond%{REQUEST_FILENAME}-D
重写cond%{REQUEST_FILENAME}-F
重写规则^(.*)$index.php[QSA,L]
App.htaccess:

<IfModule mod_rewrite.c>
    RewriteEngine on
    RewriteRule    ^$    webroot/    [L]
    RewriteRule    (.*) webroot/$1    [L]
</IfModule>
<IfModule mod_rewrite.c>
    RewriteEngine on
    RewriteRule ^$ app/webroot/ [L]
    RewriteRule (.*) app/webroot/$1 [L]
</IfModule>

重新启动发动机
重写规则^$webroot/[L]
重写规则(.*)webroot/$1[L]
root.htaccess:

<IfModule mod_rewrite.c>
    RewriteEngine on
    RewriteRule    ^$    webroot/    [L]
    RewriteRule    (.*) webroot/$1    [L]
</IfModule>
<IfModule mod_rewrite.c>
    RewriteEngine on
    RewriteRule ^$ app/webroot/ [L]
    RewriteRule (.*) app/webroot/$1 [L]
</IfModule>

重新启动发动机
重写规则^$app/webroot/[L]
重写规则(*)app/webroot/$1[L]

我应该看看其他的东西吗?

这是您在生成链接时应该能够在cakephp中修复的东西。您拥有的htaccess文件不会更改页面内容中的链接

如果出于任何原因,您不能在cakephp中执行此操作,那么您可以将其添加到Webroot htaccess中,就在行的
重写引擎的正下方:

RewriteCond %{THE_REQUEST} \ /app/webroot/index.php/([^\ ]+)
RewriteRule ^ /%1 [L,R=301]

这会将浏览器重定向到较短的URL。

如果其他人看到这一点,我的问题是/app/Config/core.php中的这一行没有注释:

Configure::write('App.baseUrl',env('SCRIPT_NAME')

注释掉它会从我的URL中删除abs URL/app/webroot/index.php/


愉快的编码。

谢谢Jon,这是我的想法,但URL是从cake生成的,我不确定在哪里可以修改它们?