我试图使用位于/app/webroot的.htaccess中的以下内容来强制删除或添加尾随斜杠到我的CakePHP 2.x应用/app/webroot 。
#<IfModule mod_rewrite.c> # RewriteEngine On # RewriteCond %{REQUEST_FILENAME} !-d # RewriteCond %{REQUEST_FILENAME} !-f # RewriteRule ^ index.PHP [L] #</IfModule> <IfModule mod_rewrite.c> # Add trailing slash RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_URI} !(.[a-zA-Z0-9]{1,5}|)$ RewriteRule ^(.*)$ http://www.domain.com/$1 [L,R=301] </IfModule>
RewriteCond %{REQUEST_URI} !(/$|.) RewriteRule (.*) %{REQUEST_URI}/ [R=301,L]
但我不想强制执行域,因为它可以在本地运行或在子文件夹内运行。 我该如何解决? 我在网上阅读的所有文档似乎强制应用程序的完整url。
事实上,即使我使用全url,它仍然无法正常工作。 有没有人设法得到这个与CakePHP的工作? 似乎你必须通过index.PHP文件运行它
如何根据查询stringredirecturl?
尝试在.htaccess中将例外置入RewriteRule
如何在一个.htaccess文件中写入多个重写条件和规则来redirecturl?
.htaccess重写规则冲突
为了说明我正在寻找一个在CakePHP中添加和删除尾部斜杠的解决scheme,而不必将URL硬编码到.htaccess文件中。
所有的htaccess拒绝Apache服务器testing页面
Hello World使用mod_wsgi,内部错误,configuration错误
为什么htaccess RewriteRule ^ foo $也匹配^ foobar $
我如何使mod_rewrite抑制处理更多的规则?
Htaccess用FastCGI重写
这通常不是一件复杂的事情。
那这个呢 ?
<Ifmodulee mod_rewrite.c> RewriteEngine On # if this is an existing folder/file then leave RewriteCond %{REQUEST_FILENAME} -d [OR] RewriteCond %{REQUEST_FILENAME} -f RewriteRule . - [L] # if trailing slash then redirect to url without trailing slash RewriteRule ^/?(.+)/$ /$1 [R=301,L] # internal rewrite to controller/dispatcher index.PHP RewriteRule ^.*$ /index.PHP [L,QSA] </Ifmodulee>
如果这个不起作用,那么这可能是你身边的一个问题。
你以前使用过mod_rewrite吗? 启用了吗?
编辑:如果您的网站不在根文件夹( DOCUMENT_ROOT ),您有2个选项。 你可以把你的htaccess的application文件夹或根文件夹。
我建议你把你的htaccess放在你的application文件夹里(专门用于你的网站)。 否则,代码将不完全相同。 以下是这种情况下的代码:
<Ifmodulee mod_rewrite.c> RewriteEngine On RewriteBase /application/ # if this is an existing folder/file then leave RewriteCond %{REQUEST_FILENAME} -d [OR] RewriteCond %{REQUEST_FILENAME} -f RewriteRule . - [L] # if trailing slash then redirect to url without trailing slash RewriteRule ^/?(.+)/$ $1 [R=301,L] # internal rewrite to controller/dispatcher index.PHP RewriteRule ^.*$ index.PHP [L,QSA] </Ifmodulee>
你的第二个问题:
另外什么是执行尾部斜杠的代码?
你可以用这个代码来处理(只改变一行)
<Ifmodulee mod_rewrite.c> RewriteEngine On RewriteBase /application/ # if this is an existing folder/file then leave RewriteCond %{REQUEST_FILENAME} -d [OR] RewriteCond %{REQUEST_FILENAME} -f RewriteRule . - [L] # if no trailing slash then redirect to url with trailing slash RewriteRule ^/?(.+)([^/])$ $1$2/ [R=301,QSA] </Ifmodulee>
尝试这个 :
<Ifmodulee mod_rewrite.c> RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_URI} !(.[a-zA-Z0-9]{1,5}|)$ RewriteRule ^(.*)$ http://%{HTTP_HOST}/$1 [L,R=301] </Ifmodulee>
试试这个( 面包店 ):
RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_URI} !(.[a-zA-Z0-9]{1,5}|/)$ #RewriteRule ^(.*)$ http://%{HTTP_HOST}/$1/ [L,R=301] RewriteRule ^(.*)$ http://%{HTTP_HOST}/$1/ [L,R=301]
如果你想做SEO,你总是可以选择使用规范链接,并停止打扰重定向:
<link rel="canonical" href="/your_controller/action/"/>
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。