Articles of mod rewrite

为什么这会导致我的网站redirect到secure.secure。* root domain * .com?

我正在重新从堆栈溢出我的问题,因为这实际上是更合适的地方来问这个问题。 原来的问题在下面。 这是我正在使用的重写规则: RewriteCond %{SERVER_PORT} ^443$ RewriteCond %{HTTP_HOST} !^(www.)secure.\ [NC] RewriteRule (.*) https://secure.%{HTTP_HOST}%{REQUEST_URI} [R,L] 如果端口是443(SSL端口),并且请求的域不是以secure或www.secure开始,则应该应用此规则。 相反,它redirect到secure.secure,然后返回一个404错误。 另外,如果我删除安全从重写规则创build RewriteCond %{SERVER_PORT} ^443$ RewriteCond %{HTTP_HOST} !^(www.)secure.\ [NC] RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R,L] 我得到了太多的redirect错误。 我承认,我不是一个mod_rewrite专家,但我认为自己能够参考文档的function。 不过在这个问题上,我很难过。 谢谢!

将http://示例redirect到http://www.example.com,并将https://example.comredirect到https://www.example.com

正如问题所述,我想将http://示例redirect到http://www.example.com和https://example.com到https://www.example.com 。 我试过了apache重写规则: RewriteCond %{HTTPS} off RewriteCond %{HTTP_HOST} !^www\. [NC] RewriteRule ^ http://www.%{HTTP_HOST}%{REQUEST_URI} [L,R=301] #jmv-this should work, but does not RewriteCond %{HTTPS} on RewriteCond %{HTTP_HOST} !^www\. [NC] RewriteRule ^ https://www.%{HTTP_HOST}%{REQUEST_URI} [L,R=301] 但只有http://example.com被redirect到http://www.example.com 。 当我去https://example.com我留在https://example.com 我认为这些规则应该工作。 有什么问题?

Apache conf:如何在通配符虚拟主机中使用mod_vhost_alias时指定<Directory / path / to / subdomain>中的子域

首先,我们需要一个对*.example.com的请求来处理相应的/var/www/*/目录,我们通过使用带有VirtualDocumentRoot mod_vhost_alias这个工作,如下所示: <VirtualHost *:80> ServerAlias *.example.com UseCanonicalName Off VirtualDocumentRoot /var/www/%1/ </VirtualHost> 现在我们想通过在vhostconfiguration的<Directory>块中应用相同的RewriteRules到所有子域/目录来扩展这个共享configuration,但是我们不知道如何引用子域/目录。 我们基本上是想做这样的事情(注意使用%1,在这种情况下不起作用): <VirtualHost *:80> ServerAlias *.example.com UseCanonicalName Off VirtualDocumentRoot /var/www/%1/ <Directory /var/www/%1> RewriteEngine on RewriteRule ^about/?$ index.php?view=about RewriteRule ^settings/?$ index.php?view=settings RewriteRule ^support/?$ index.php?view=support </Directory> </VirtualHost> 是这样的可能吗? 谢谢。

根据主机名重写URL

是否有可能使用.htaccess文件来重写这个: http://customer1.com/app/assets/css 进入这个: http://customer1.com/app/customers/customer1/assets/css ? 如果是那么如何? 编辑:目标是避免任何更新.htaccess添加新客户时EDIT2: 我看到我的问题太模糊了。 我有一个用于许多不同客户的CMS(www.foo.com,www.bar.com,www.somerandomname.com)。 每个客户在目录/ data / www / cms / customers / XXXXXX /中都有唯一的文件(devise,上传),其中XXXXXX是客户的名称。 Apacheconfiguration文件在/ data / www / cms /上设置了默认DocumentRoot。 我想要做的是让URL http://www.foo.com/app/assets/css/bg.png从给定的客户数据目录,即/ data / www / cms /应用程序/客户/ foo.com /资产/ CSS / bg.png。

Apache htaccess的RewriteRule删除尾部的斜杠; 无限循环?

我在.htaccess ( mod_rewrite )中使用以下内容从我的URL中删除尾部的斜线: RewriteRule ^([a-z0-9_-]+)/$ $1 [L,NC,R=301] 当然,由于字符类不匹配斜杠,这适用于像some_page/这样的链接,而不是article/some_page/ 。 如果我在字符类中添加一个斜杠来创build[a-z0-9_/-] ,那么在尝试加载页面时会出现无限循环。 我也尝试使+非贪心使用+? ,但那也不pipe用; 也没有删除R=301redirect。 (如果它有所不同,页面加载, /article/some_page/实际上是/article/some_page/index.html ,我只是希望它显示为/article/some_page 。)

网站集成:框架,redirect还是虚拟域?

我被网站devise中的许多select所压倒。 我非常好奇地问一些很容易设置的东西,但由于我没有任何经验,所以我正在寻求帮助。 当前设置 我有一个域mydomain.com和FTP访问它。 Apache Web服务器有mod_rewrite和Perl安装(如果有帮助)。 我设置了一个当前指向http://www.mydomain.com/user目录的子域user.mydomain.com 。 我在另一台linux机器上创build了一个在werc框架中运行的草案网站。 此服务器没有域名,我可以使用静态IP或mywebsite.dyndns.org访问它。 werc支持虚拟主机,但是我不太了解它,知道它是否对我有帮助。 我正在运行lighttp(w / vhost和mod_rewrite )并拥有完全的root权限,所以任何事情都可以在这一端。 问题 我想在子域user.mydomain.com中运行werc站点。 在浏览器中的URL应该是user.mydomain.com ,即没有明显的redirect到实际的werc服务器IP应该发生。 什么是最好的方法来实现呢? 我尝试了mydomain.com机器上的mod_rewrite ,但是我只能redirect。 我认为可以为werc托pipe网站使用单独的“框架”,但感觉有点不洁。 比如<title>标签会发生什么? 我有什么select? 提前致谢。

如何访问mod_rewrite中的GET参数RewriteCond?

我试图从mod_rewrite访问GET参数。 例如,给定这个URL: http : //myserver.com/foo.png?foo=bar 以下规则不会捕获此URL: RewriteCond %{REQUEST_URI} bar [NC] 虽然这样做: RewriteCond %{THE_REQUEST} bar [NC] REQUEST_URI不包含GET参数吗? THE_REQUEST要走的路吗?

拒绝任何setup.php或upload.php的所有请求

从我们在服务器上看到的日志中,有大量的请求来访问upload.php (例如: /plugins/editors/tinymce/jscripts/tiny_mce/plugins/tinybrowser/upload.php ),或者setup.php了大量的variablessetup.php为phpMyAdmin。 这些日志中有404个错误,因为我们没有这些确切的URL,但是如果我们能够否认这种types的所有潜在的攻击,我们会觉得更安全。 所以我想拒绝在我的Apache2 web服务器上包含setup.php或upload.php所有请求。 我们有几百(百)的VirtualHost,我不想写几百次的指令来拒绝每个VirtualHost中的这些文件名。 问题:如何在服务器上全局执行此操作?

RewriteRule:无法编译正则expression式。 版本支持?

我正在运行一个Ubuntu 10.04 LTS,Apache版本2.2.14。 在httpd.conf中,我有一个重写规则,如下所示: RewriteRule (*UTF8)^/users/([^/])([^/]+)/(.*)$ /users/$1/$2/$1$2/$3 [L] 这个想法是在我的服务器中将目录设置为国际化域名(IDN)。 我不断收到 RewriteRule: cannot compile regular expression 任何想法,如果这是恶魔版本或别的东西?

Apache的mod_rewrite url重写

我想用mod_rewrite从http://www.server.com/directory/public重写到http://www.server.com/directory (其中目录然后指向目录/ public) 我尝试了几件事,但我无法弄清楚。 这是我的configuration: <VirtualHost xxx.xxx.xxx.xxx:443> ServerAdmin [email protected] ServerName www.server.com DocumentRoot /var/www/server.com <Directory /var/www/server.com> RewriteEngine on RewriteCond %{REQUEST_URI} ^/directory RewriteRule ^(.*)$ /directory/public/ [L] </Directory> </VirtualHost>