我想使用 mod_rewrite 来读取 POST 请求中发送的参数。我需要检查值并处理请求。
接收错误:
[调试] mod_headers.c(663): headers: ap_headers_output_filter()
在我将其包含在.htaccess文件中之后:
# 6 DAYS
<FilesMatch "\.(ico|pdf|flv|jpg|jpeg|png|gif|js|css|swf)$">
Header set Cache-Control "max-age=518400, public"
</FilesMatch>
# 2 DAYS
<FilesMatch "\.(xml|txt)$">
Header set Cache-Control "max-age=172800, public, must-revalidate"
</FilesMatch>
# 2 HOURS
<FilesMatch "\.(html|htm)$">
Header set Cache-Control "max-age=7200, must-revalidate"
</FilesMatch>
Run Code Online (Sandbox Code Playgroud)
对于我可以做些什么来解决这个问题,任何帮助表示赞赏?
RewriteEngine On
RewriteCond %{HTTPS} !=on
RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC]
RewriteRule ^(.*)$ http://%1/$1 [R=301,L]
Run Code Online (Sandbox Code Playgroud)
...导致从“www 到非 www”的完美的非硬编码 301 重定向,完全相反的情况会是什么样子?
编辑:
根据 Prix 的帖子,我已将.htaccess文件更改为以下内容:
Options +FollowSymLinks
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{HTTPS} !=on
RewriteCond %{HTTP_HOST} !^www\.(.+)$ [NC]
RewriteRule ^(.*)$ http://www.%1/$1 [R=301,L]
</IfModule>
Run Code Online (Sandbox Code Playgroud)
如前所述,http://www./不幸的是,这重定向到。谁能帮忙?
我已将我的.htaccess文件编辑为以下内容:
ErrorDocument 404 /index.php?page=page-not-found
ErrorDocument 400 /index.php?page=bad-request
Run Code Online (Sandbox Code Playgroud)
现在错误 404 正确重定向,但是如果我输入一个地址,例如http://example.com/%22%%5E$%%5E&%C2%A3&服务器不会重定向 400 错误,而是显示默认的 apache 消息。我究竟做错了什么?
我目前正在为 WordPress 上的一个网页预加载字体文件。
所以https://example.com没有预装。https://example.com/test/预加载的字体文件。
这就是我所得到的.htaccess。
<Files "/test/">
Header add Link "</fonts/poppins.woff2>; rel=preload; as=font; type=font/woff2; crossorigin"
</Files>`
Run Code Online (Sandbox Code Playgroud)
该链接工作正常,这是我正在努力解决的条件加载。尝试添加通配符,加上完整的 URL 等,但没有任何乐趣。
我是否认为这不是语法,但它需要允许才能起作用?
刚刚重新完成了我的网站,并尝试在 .htaccess 文件中为已更改的链接设置重定向
这工作正常,但它不适用于/example/(在源路径上带有斜杠)
Redirect 301 /example /example.php
Run Code Online (Sandbox Code Playgroud)
所以我添加了这个来解释尾部斜杠:
Redirect 301 /example/ /example.php
Run Code Online (Sandbox Code Playgroud)
但这会重定向到example.php/(向目标添加斜杠,这不起作用)
显然我做错了。什么是更好的方法?
我似乎遇到了 Apache 2.2 的 Rewrite 模块(在 FreeBSD 8 上运行)的问题。我的.htaccess文件如下:
Options -Indexes
RewriteEngine on
RewriteRule ^xpaste$ cross.php [L]
RewriteRule ^x([a-f0-9]*)$ cross.php?id=$1 [L]
RewriteRule ^(gen|[a-f0-9]+)$ index.php?$1 [L]
RewriteRule ^(.*)$ index.php [L]
Run Code Online (Sandbox Code Playgroud)
然而不知何故,最后一条规则覆盖了其他三条规则。一旦我将其注释掉,其他规则就会按预期工作:
www.example.com/xpaste 打开 cross.phpwww.example.com/x132633 打开 cross.php?id=132633www.example.com/gen 打开 index.php?gen我已经试过的各种组合L,NS和S=n每个标志RewriteRule,但除非我注释掉最后一条规则,一切都被定向到index.php。RewriteRule一旦找到匹配项,如何让 Apache 停止处理s?
我在运行 apache 2.4 的 Centos 6.5 上有以下虚拟主机配置。
<VirtualHost *:4323>
ServerName www.first.com
ServerAlias first.com
DocumentRoot /var/www/first.com
DirectoryIndex index.html
RewriteEngine on
RewriteRule ^index\.html$ index.php$1 [L,R=301]
ErrorLog /var/www/first.com/log/error.log
CustomLog /var/www/first.com/log/requests.log combined
</VirtualHost>
Run Code Online (Sandbox Code Playgroud)
当我转到server_IP:4323默认的 HTTP 页面时。我怎样才能让重定向index.php工作?
该httpd.conf配置是这里
下面的 apache 详细信息 -
Server version: Apache/2.2.15 (Unix)
Server built: Mar 22 2016 19:03:53
Server's Module Magic Number: 20051115:25
Server loaded: APR 1.3.9, APR-Util 1.3.9
Compiled using: APR 1.3.9, APR-Util 1.3.9
Architecture: 64-bit
Server MPM: Prefork
threaded: no
forked: yes …Run Code Online (Sandbox Code Playgroud) 我正在尝试通过glitter_calendarapache 上的模式阻止来自机器人的请求。
史前。我的服务器经常被机器人访问。请求 URI 是 ...glitter_calendar.. wordpress 返回 404。服务器甚至每周宕机一次。我尝试用 Fail2ban 阻止它们。没有成功。服务器负载不会下降,我的 iptables 块规则中不断出现新主机。
在我的.htaccess我试图通过模式添加阻止规则glitter_calendar:
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{THE_REQUEST} ^.*(wpdffcontent)|(glitter_calendar)|(mp4:).* [NC]
RewriteRule ^(.*)$ - [F,L]
</IfModule>
<Files xmlrpc.php>
Order Deny,Allow
Deny from all
</Files>
Run Code Online (Sandbox Code Playgroud)
发现类似的问题。链接:
我的 mod 重写似乎不起作用。我在 wordpress 中找不到错误 404,而不是通过 …
三个星期以来,我一直在努力使 Wordpress 中的永久链接设置在 Google Cloud Platform 上工作。这是对我所拥有的、我正在尝试做的以及我已经尝试过的内容的快速总结。
我在 GCP 上有两台服务器都遇到了同样的问题。
服务器 1(迁移服务器) 该服务器有四个 Wordpress 站点,我是从共享托管服务提供商那里迁移过来的。所有这四个 WordPress 网站都有问题,除非我使用 WordPress 设置下固定链接部分中的第一个设置。操作系统:Debian 8 网站:www.example.com
Server 2 (Google Deployed) 该服务器是一个单独的 Wordpress 部署,使用 Google 的预构建 wordpress 实例部署启动。操作系统:Debian 8 Wordpress:4.8
永久链接问题:
在 Wordpress -> 设置 -> 永久链接 -> 如果我选择“普通 - http://example.com/?p=123”,我可以加载网站的首页并导航到任何子页面。如果我选择“Plain”以外的任何其他内容,无论是“日期和名称”、“月份和名称”、“数字”、“帖子名称”还是“自定义结构”,那么我只能加载网站的首页我无法加载任何其他页面。当我尝试加载任何其他页面时,我收到以下错误:
Not Found
/loopstats/在此服务器上找不到请求的 URL 。Apache/2.4.10 (Debian) 服务器在 example.com 端口 80
现在他是真正的踢球者,Server 2 (GCP Deployed),我使用 Google 部署管理器来启动 Wordpress 实例,Permalinks 的默认设置是“自定义”选项,带有以下 slug:
/index.php/%year%/%monthnum%/%day%/%postname%/
Run Code Online (Sandbox Code Playgroud)
同样,如果我使用此自定义链接以外的任何其他设置,我只能加载首页并且所有其他链接都已损坏。
当我回到服务器 1(迁移服务器),并在自定义字段中输入这个 slug 时,一切都在服务器 1 上工作。但这对我不起作用,因为我现在留下了这些令人难以置信的讨厌的链接包含 index.php。(我被告知这对于 SEO 目的来说很糟糕)。
我尝试过的事情:
谷歌搜索的日子。我对 …
.htaccess ×8
apache-2.2 ×7
mod-rewrite ×3
rewrite ×2
301-redirect ×1
botnet ×1
cache ×1
http ×1
linux ×1
permalinks ×1
php ×1
redirect ×1
virtualhost ×1
wordpress ×1