Articles of mod rewrite

Apache的mod_rewrite规则是不是触发?

我在我的服务器( http://flarn2006.dyndns.org/tppupdates/ )上有一个Twitch Plays口袋妖怪Reddit更新的存档。 其中一些包括格式“/ u / 用户名 ”的链接,这是在Reddit上有效,但不是在我的网站上。 (我不是指的是正确的链接,这是正确的)。我试图使用mod_rewrite自动redirect这些链接,所以如果它得到“/ü/ 任何东西 ”的请求包含“ / tppupdates /“,它会将其redirect到Reddit。 我在我的apache2.conf中有以下内容: RewriteEngine on RewriteCond %{HTTP_REFERER} /tppupdates/ RewriteRule ^/u/(.*)$ http://reddit.com/u/$1 [R=301] 然而,当我点击其中一个违规链接,它只是给了我一个404。怎么了?

mod_rewrite将这两个规则合并为一个

我有两个目前正在运行的规则,但我觉得可以将它们整合到一个中,以便维护较小的configuration,并为每个HTTP请求处理更less的规则。 规则: RewriteRule ^/user/[0-9]+/?$ /index.php [NC,QSA,L] RewriteRule ^/user/[0-9]+/(.*)$ /$1 [NC,QSA,L] 我不得不添加第一个规则显式redirect到/index.php因为去http://www.example.com/user/5/ ,例如,会给我一个HTTP 400.重写将内部重写/ ,而不是阅读DirectoryIndex, index.php ,error_log会给我: client denied by server configuration: / 。 将明确的redirect添加到/index.php固定的URL(例如http://www.example.com/user/5/ ,第二条规则将适用于其他所有内容。 有没有一种方法来设置configuration通常只使用DirectoryIndex我已经设置,而不是明确列出index.php在这里? http://www.example.com工作得很好,没有重写规则,所以我不完全确定重写为什么会打破它。

将同一个networking中的另一台服务器的Apache请求重写为VirtualHost

这里基本上是我想要做的: http请求进来后,路由器中的前端将其发送到本地networking(服务器A)中的服务器, 服务器识别虚拟主机的请求 服务器a具有该虚拟主机的重写规则,该规则重写请求以将其发送到位于同一本地networking上的服务器B 服务器B获取请求,识别虚拟主机并根据虚拟主机设置设置文档根目录 它一直运行到服务器B,请求总是以默认定义结束。 这可能吗? 我正在运行Debian Wheezy。 服务器apacheconfiguration文件/etc/apache/sites-enabled/wiki <Directory /var/lib/shared/websites/wiki/www> Options None AllowOverride All Order allow,deny Allow from all </Directory> <VirtualHost *:80> ServerName wiki ServerAlias wiki.asus.local ServerAlias wiki.mydomain.net DocumentRoot /var/lib/shared/websites/wiki/www CustomLog /var/lib/shared/websites/wiki/log/access.log combined ErrorLog /var/lib/shared/websites/wiki/log/error.log RewriteEngine on RewriteRule ^/(.*) http://192.168.10.91/$1 [P,L] </VirtualHost> 服务器B apacheconfiguration文件/etc/apache/sites-enabled/wiki <Directory /var/lib/shared/websites/wiki/www> Options None AllowOverride All Order allow,deny Allow […]

在Apache中解密一个头文件(HTTPD)

我被要求看看在处理请求期间是否有可能解密报头。 具体用例是通过从请求中删除另一个头(如果解密的数据不是“正确的”)来响应头的解密内容。 encryption头中的数据正被用于validation客户端的各个方面。 我可以看到如何使用带有未encryption头部值的mod_headers轻松完成这项工作,但是我还没有find头部,解密和使用结果值的任何内容。 我错过了什么,或者这是不可行的?

在Opencart中,Mod_rewrite下划线(或连字符)

我正在将一个电子商务网站转移到一个新的购物篮。 由于某种原因,旧网站使用破折号作为类别,但是对于产品却强调了下划线。 因此,产品的完整url如下所示: http://www.example.com/Engineering-Common-Bricks/65mm_Class_B__Solid_Engineering_Brick__Price_Each 新的篮子使用破折号的一切,所以我需要重写传入的url,如上面的以下内容: http://www.example.com/Engineering-Common-Bricks/65mm-Class-B–Solid-Engineering-Brick–Price-Each 我知道有很多重写下划线的材料,但是他们似乎没有为我工作。 我正在使用Opencart,它带有一组现有的重写规则,所以这些可能会干扰我正在添加的新规则。 现有的.htaccess如下所示: Options +FollowSymlinks # Prevent Directoy listing Options -Indexes # Prevent Direct Access to files <FilesMatch "\.(tpl|ini|log)"> Order deny,allow Deny from all </FilesMatch> # SEO URL Settings RewriteEngine On # If your opencart installation does not run on the main web folder make sure you folder it […]

Mediawiki迁移现有的维基页面shortURL没有反感SEO(维护旧链接)

遵循以下步骤: http://www.mediawiki.org/wiki/Manual:Short_URL http://www.mediawiki.org/wiki/Manual:Short_URL/Apache 我已经从url迁移了我的维基页面: http://acacha.org/mediawiki/index.php/ARTICLENAME 至 http://acacha.org/mediawiki/ARTICLENAME 例如,现在看到Apache的文章,你可以去: http://acacha.org/mediawiki/Apache 但现在我的问题是以下旧链接: http://acacha.org/mediawiki/index.php/Apache Mediawiki将其解释为名为“index.php / Apache”的文章。 我不介意不能写index.php开始的文章/但对于SEO是非常重要的旧链接redirect到新的链接。 例如,我想从URLredirect: http://acacha.org/mediawiki/index.php/Apache 至 http://acacha.org/mediawiki/Apache 我目前的configuration是: Apache VirtualHost(文件/etc/apache2/conf-available/mediawiki.conf)。 跟随: ServerName acacha.org ServerAlias www.acacha.org DocumentRoot /var/lib/acacha_mediawiki php_value upload_max_filesize 20M #DOES NOT WORK: #AliasMatch ^/mediawiki/index.php(.*) /var/lib/acacha_mediawiki/w/index.php <Directory /var/lib/acacha_mediawiki/> #If this is uncommented new files uploaded give a Forbidden Error. Example: # http://acacha.org/mediawiki/upload/c/c0/Francesc_fores_identity.png –> […]

testing文件是否存在于DOCUMENT_ROOT之外

我在DOCUMENT_ROOT里面有这个.htaccess文件,它检查一个文件的存在,maintenance.enable,如果存在的话服务于maintenance.html: <IfModule mod_rewrite.c> RewriteEngine On RewriteBase / # This portion checks for the presence of maintenance.enable to toggle # maintenance mode RewriteCond %{DOCUMENT_ROOT}/maintenance.html -f RewriteCond %{DOCUMENT_ROOT}/maintenance.enable -f RewriteCond %{SCRIPT_FILENAME} !maintenance.html RewriteRule ^.*$ /maintenance.html [R=503,L] ErrorDocument 503 /maintenance.html Header Set Cache-Control "max-age=0, no-store" RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ index.php?/$1 [L] </IfModule> 但是,它似乎不在DOCUMENT_ROOT之外工作。 例如,考虑我有这样的文件夹结构: […]

mod_rewrite:奇怪的infinit循环

我有一个文件夹结构,像这样: 论坛 的.htaccess [更多文件] forum_english 的.htaccess [更多文件] 论坛/ .htaccess看起来像这样: RewriteEngine on RewriteCond %{HTTP_HOST} \.(com|net)$ [NC] # just rewrite if the query comes from an english languaged domain RewriteRule ^(.*)$ ../forum_english/$1 #some more RewriteRules from another forum. I don't know, if I am allowed to show them. They should work well, side by side. forum_english / […]

将页面/子文件夹redirect到新的域名url,而无需在浏览器中更改url

我一直在寻找答案,没有任何运气(到处search) 基本上,我想重写一个页面(子文件夹)到一个新的域名,而无需更改url。 我试过没有运气: RewriteEngine On RewriteBase / RewriteCond %{REQUEST_URI} !^/test/ RewriteRule ^(.*) http://newdomain/$1 [P] 我看了一下“重复”的问题,但没有回答。 它没有解释如何在不更改url的情况下将网页重新写入新域。

如何跨2个IP地址共享单个域SSL证书

我有一个wordpress网站example.com 。 我有一个可以跨多个服务器使用的域SSL证书。 当用户访问example.com或任何子文件夹期望论坛时,他们访问运行apache的server1 。 当用户访问example.com/forum时,他们被redirect到运行nginx的server2 。 我将如何设置这两个IP地址映射在example.com下,使得redirect只是内部的,并且域始终保持example.com 在我的网站apache虚拟主机,我正在使用 Redirect permanent /forum http://server2ip redirect到server2 编辑根据卢卡的答案将server1设置为PROXY到SERVER2 这里是我的apache虚拟主机configuration的设置 VirtualHost *:80> RewriteEngine on ServerName example.com ServerAdmin [email protected] DocumentRoot /var/www/example #Redirect all HTTP requests to HTTPS # RewriteCond %{SERVER_PORT} 80 # RewriteRule ^(.*)$ https://example.com/$1 [R=301,L] ProxyPass /forum https://server2ip/ <Location /forum> ProxyPass https://server2ip/ ProxyPassReverse https://server2ip/ </Location> <Proxy *> Order allow,deny […]