我们正在从一个子域迁移到另一个子域。 这个特定的域名有几个网站的子集。 我已经设置了以下重写来处理全局redirect: 在docroot/.htaccess (“规则#1”) RewriteEngine On RewriteCond %{HTTP_HOST} ^virtual\.example\.com$ RewriteRule ^(.*)$ http://events.example.com/$1 [L,R=301] 它通常工作,除了有几个网站有自己的重写规则。 例如, /roadshow/2015/具有以下全面规则: 在docroot/roadshow/2015/.htaccess (“规则#2”) RewriteCond %{REQUEST_URI} ^(.*)$ RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_URI} !\.php$ RewriteRule .* framework/main.php?url=%1&%{QUERY_STRING} [L] 问题: /roadshow/2015/下的页面继续加载,就像规则1不存在一样。 我在这里错过了什么? 🙂
我的htaccess文件有以下两行 RewriteRule ^payment payment.php RewriteRule ^payment-confirmed payment-confirmed.php 当试图访问payment-confirmed.php它只是去payment.php(付款) – 我猜这是因为它只读取第一个字,并认为它已经find的位置。 有没有一种方法可以configuration我的htaccess文件,以避免这种情况?
我已经转换我的.htaccess与Nginx的工作,但我有很多404错误或错误的文件夹和子文件夹重写显示。 这个Nginx的configuration适用于文件夹和子文件夹,但是/view/它会去/home/website/www/index.php .htaccess : RewriteRule ^view/execute(.+)$ /home/website/view/exec.php?r=$1 [QSA,L] RewriteRule ^view/status$ /home/website/view/status.php [QSA,L] RewriteRule ^(.+)/$ /home/website/www/index.php?a=$1 [QSA,L] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.+)$ /home/website/www/index.php?a=$1 [QSA,L] 和Nginxconfiguration: listen 80; ## listen for ipv4; this line is default and implied listen [::]:80 default_server ipv6only=on; ## listen for ipv6 root /home/website/www; index index.php index.html index.htm; # Make […]
我有一个Apache 2.2,承载一个专有(商业)authentication模块。 这些模块会查看每个请求,如果在后端身份validation软件中被标记和“匿名确定”,则可以让它们通过。 一个这样的匿名资源是一个小型的gif,由面向我们的Apaches的load balacer查询,命名为/lb.gif 。 当authentication软件出现问题时,其模块不会采取任何措施阻止所有内容,包括我们的负载均衡器信标文件。 负载平衡器认为该站点已closures,并停止向其发送stream量。 我希望Apache不要将这个特定的请求发送给其他模块。 这种作品: RewriteEngine On RewriteRule ^/lb.gif$ – [R=200] 看到这个,Apache返回一个200结果的HTML: <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN"> <html><head> <title>200 OK</title> </head><body> <h1>OK</h1> <p>The server encountered an unknown error, possibly due to misconfiguration. Contact the server administrator: [no address given]<p> More information about this error may be available in the […]
我使用Apache 2.2.3(旧版本,我知道) 所以我试图redirect基于旧版本的IE(6和7现在…),我得到一个redirect循环。 我有: RewriteEngine On RewriteCond %{HTTP_USER_AGENT} "MSIE\ [6-7]" [NC] RewriteRule .* https://example.com/upgrade.html [R=302,L] 在虚拟机中使用类似IE7的东西只需要花费很长时间,根本不会加载。 也尝试了这个与browserstack,具有相同的结果。 通常我的网站会出现,但是这个重写对我来说工作不太好。 我想redirect到一个页面,如果Apache看到IE6,7而不是去主页。 使用JavaScript库为此不适用于我,因为一切都是dynamic生成的。
我试图做一个简单的redirect到维护页面,但似乎像Apache不会让我这样做! 我有一个维基的3个版本的文件夹(每个都有一个特定的语言),所以我想redirect每个维基交通到他自己的维护页面。 这里是我的.htaccess #Redirect trafic to maintenance page RewriteEngine On RewriteCond %{REQUEST_URI} !maintenance.htm$ [NC] RewriteRule "(.*\/wiki.*\/).*" "$1/maintenance.htm" [R=302,L] mod_rewrite已启用 AllowOverride All已启用 我testing了我的正则expression式https://regex101.com/r/jN2kA7/1 RewriteRule ^。* $ maintenance.htm [R = 302,L]奇怪地redirect到http://myserver/var/www/wiki/maintenance.htm 目标是将“myserver / wiki / ANYTHING”redirect到“myserver / wiki / maintenance.htm” 如果有人能告诉我我做错了什么,这将是很好的 谢谢 编辑: 经过一些更多的testing,似乎我正在寻找类似的东西 RewriteRule "(.*)" "??PROTOCOL??://%{HTTP_HOST}/??SITEFOLD??/maintenance.htm" [R=302,L]
在Apache 2虚拟主机中,我有以下configuration(在我的情况下,文档根目录的.htaccess (为简单起见,http:80和https:443也是如此) RewriteEngine On RewriteCond %{HTTPS} off RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} 为了将任何http连接redirect到https而且, ErrorDocument 500 /error.php ErrorDocument 404 /error.php ErrorDocument 403 /error.php ErrorDocument 402 /error.php ErrorDocument 401 /error.php 生成自定义错误消息。 第三个要素是一个受保护的子文件夹,需要进行身份validation(每个.htaccess在该文件夹中): AuthType Basic AuthName "Test" AuthUserFile /some/path/to/passwords Require user joe 一切工作正常,除非有人试图检索http://example.com/protectedfolder事实上,会发生什么事情是,客户端获得302 Found答复redirect到https://example.com/error.php 另一方面, 如预期的那样, https://example.com/protectedfolder会导致一个自定义(即,由error.php生成) 401 。 http://example.com/publicfolder导致302redirect到https://example.com/publicfolder ,然后301永久redirect到https://example.com/publicfolder/ ,最后(因为DirectoryIndex被禁用)a自定义403错误。 正如所料。 而且, http://example.com/nonexistent也会导致302到https://example.com/nonexistent ,然后按照预期的那样定制404 。 如果我禁用了ErrorDocument 401configuration,则http://example.com/protectedfolder的查询会立即生成401 […]
我想知道是否有可能发送一个页面内容200状态不通过状态30x? 例如或重写条件: RewriteCond %{HTTP_USER_AGENT} ^-?$ RewriteCond %{REQUEST_URI} !errors\/noua\.htm RewriteRule (.*) /errors/noua.htm 在这种情况下,我想直接显示noua.htm 200状态(不做301redirect到noua.htm) 谢谢
我试图禁止用户访问文件夹名称中具有当前date的某个文件夹。 这不起作用: RewriteCond %{REQUEST_URI} ^/folder%{TIME_YEAR}%{TIME_MON}%{TIME_DAY} RewriteRule .* – [F] 这样做(今天考虑是2015-11-16) RewriteCond %{REQUEST_URI} ^/folder20151116 RewriteRule .* – [F]
我目前正在使用mod_rewriteredirect到https的所有子域名,但多个来源已经build议 使用mod_rewrite来做这不是推荐的行为。 请参阅RedirectSSL apache文档build议redirect和RedirectMatch: RewriteRule的一个常见用途是redirect整个类的URL。 例如,/ one目录中的所有URL都必须redirect到http://one.example.com/ ,或者所有http请求都必须redirect到https。 这些情况最好通过Redirect指令处理。 请记住,redirect保留了path信息。 也就是说,redirect一个URL /一个也会redirect所有的URL,比如/one/two.html和/one/three/four.html。 不幸的是,这些文档(以及其他所有我发现的)都只考虑匹配一个域,而不是所有的子域。 RedirectMatch似乎是这样一个相对简单的任务的好候选人,但我似乎无法得到“http”匹配,如我所料: RedirectMatch permanent "^http://(.*)$" "https://$1" 我的猜测,为什么这是行不通的,因为redirectMatch正在寻找一个path,而不是一个URI,但在这一点上,我卡住了。 是否有可能完成所有子域的redirect到https没有mod_rewrite,或者是最好的方法?