Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/meteor/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Apache Cakephp中带双斜杠的Url路由_Apache_Cakephp_Cakephp 2.0 - Fatal编程技术网

Apache Cakephp中带双斜杠的Url路由

Apache Cakephp中带双斜杠的Url路由,apache,cakephp,cakephp-2.0,Apache,Cakephp,Cakephp 2.0,我在日志中看到,一些用户正试图使用以下url格式访问我的网站: http://mysite.com//home/article/123 (注意域后面的双斜杠)。 我想让它们执行相应的“单斜杠”URL的操作。 所以我试着添加这样一条路线: Router::connect('//home/article/:id/*', array( 'controller'=>'article', 'action'=>'view'), array('pass' => ar

我在日志中看到,一些用户正试图使用以下url格式访问我的网站:

http://mysite.com//home/article/123
(注意域后面的双斜杠)。 我想让它们执行相应的“单斜杠”URL的操作。 所以我试着添加这样一条路线:

Router::connect('//home/article/:id/*', array(
    'controller'=>'article',
    'action'=>'view'),
    array('pass' => array('id'),
    'id' => '[0-9]+',
));
但我得到了这个错误:

Error: [MissingPluginException] Plugin  could not be found.
我还尝试了以下重写规则:

RewriteCond %{REQUEST_URI} ^(.*)//(.*)$
RewriteRule . %1/%2 [R=301,L]
但是url没有改变,我得到了同样的错误


为什么这是错误的?我需要向cakephp路由(或Apache重写规则)添加什么规则?

路由器不重定向,它只是将URL映射到控制器操作。如果要删除
/
,请在Web服务器上执行此操作。请使用.htaccess中的重写规则执行此操作。但是,您正在使用的重写不会解决问题,因为它只会删除域名和第一个斜杠后的双斜杠

RewriteCond %{REQUEST_URI} ^(.*)//(.*)$
RewriteRule . %1/%2 [R=301,L]
此规则仅适用于URL的以下部分:

主页/文章/123

因此,它将解决这个问题:

http://www.example.com/home//articles/123

但不是这个:

http://www.example.com//home/articles/123

如果需要修复这两种情况,则需要添加此规则,或者添加另一个规则:

RewriteRule ^/(.*)$ http://www.example.com/$1 [R=301,L]

这是缓存的问题

在我的例子中,我在Nginx服务器上的URL中有双斜杠。 解决方案是删除此缓存。 为此:

rm -rf /path/to/application/app/tmp
现在您需要重新创建位于tmp文件中的文件:

mkdir /path/to/application/app/tmp/cache
mkdir /path/to/application/app/tmp/logs
mkdir /path/to/application/app/tmp/purifier

不要忘记检查每个文件的权限,以避免出现警告(512)之类的错误。

我愿意在Web服务器上执行此操作,但如何执行?