Php 禁止发布搜索引擎优化URL请求
我有一个基本的MVC系统,它将POST数据发送到URL,例如 管理员/产品/添加/ 但这给了我一个错误 禁止的 您没有访问的权限 /管理/产品/添加/在此服务器上 此外,在尝试查找时遇到404 Not Found错误 使用ErrorDocument来处理请求 规则很简单Php 禁止发布搜索引擎优化URL请求,php,apache,mod-rewrite,Php,Apache,Mod Rewrite,我有一个基本的MVC系统,它将POST数据发送到URL,例如 管理员/产品/添加/ 但这给了我一个错误 禁止的 您没有访问的权限 /管理/产品/添加/在此服务器上 此外,在尝试查找时遇到404 Not Found错误 使用ErrorDocument来处理请求 规则很简单 RewriteRule ^(.*)/$ index.php?uri=$1 上次我在服务器上看到它时,将文件/目录权限更改为755似乎可以修复它,但这次不行。我从未真正理解错误的原因,因此希望有人能够提供更多信息?尝试以下方法:
RewriteRule ^(.*)/$ index.php?uri=$1
上次我在服务器上看到它时,将文件/目录权限更改为755似乎可以修复它,但这次不行。我从未真正理解错误的原因,因此希望有人能够提供更多信息?尝试以下方法:
RewriteCond %{REQUEST_METHOD} =POST
RewriteRule ^(.*)/$ index.php?uri=$1
您有两个错误:
/path/to/documentroot/admin/product/add/
,并生成一个目录列表(只有在apache获得授权的情况下,才会列出目录内容)。当然,这不是服务器上的真实目录。它是应用程序中的虚拟路径。所以apache最终得到了404(这导致了错误2)
应用程序处理一个虚拟路径,apache不管理它。RewriteRule任务是在apache尝试提供请求路径之前捕获请求路径,并将其作为查询字符串参数提供给单个php文件(index.php
)
所以。。。未应用此重写规则。可能妨碍这一规则应用的因素很多:
rewrite ENGINE on
)chmod
/chown
解决方案解决问题的地方AllowOverride None
)。是否有其他.htaccess文件优先- 如果您的apache版本大于2.2.16,您可以用替换RewriteRule,以检查这是否来自mod rewrite问题
- 尝试直接请求
,这样至少可以直接请求该文件index.php
- 尝试直接访问documentRoot上的有效ressource(一个txt文件、一个图像、一些不应由重写处理但直接提供的内容)
- 检查您的任何虚拟路径是否可以映射Apache没有尝试为物理路径提供服务的真实物理路径(例如当您编写
),但确实将路径推到RewriteCond%{REQUEST_FILENAME}-d
index.php
- 检查apache错误日志
- 调试使用
和重写日志
重写日志级别
- 收集事实、设置和测试,然后将其推送到SO或
帖子
请求(保持网络跟踪处于记录模式以捕获多篇帖子),或者尝试使用实时HTTP回复头重播帖子。你应该试着找出有问题的帖子,并给我们提供详细信息。调试并不神奇
现在我知道了一个神奇的随机后失败。这是一个空的获取url错误。可能是这样(也可能不是)。如果您有一个隐藏在某处的空GET url(
,url()
,例如,在css中,或者在标题中有一个空链接“重播启动源页面的请求,一些浏览器甚至会重播提供给您该页面的帖子(如果找到)。这可能会导致隐藏帖子被破坏。”
也可能是帖子没有发送到正确的服务器。很难说。所以请从你的评论中收集信息,添加更多的网络分析,并编辑问题
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /index.php?uri=$1 [L]
RewriteCond %{HTTP_HOST} !^www\.(.*)$ [NC]
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L]
RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC]
RewriteRule ^www\.(.*)$ http://%1/$1 [R=301,L]