我试图设置一个WebDAV服务器,它使用用户名redirect到一个私人的DAV目录。 在每个私人目录中还有一个名为SharedFolder的文件夹。 这个想法是,当用户login时,他将首先被redirect到他的私人目录。 使用重写模块,URL中将不会显示任何path,只会显示阻止用户进入另一个私人目录的主机名。 当用户打开名为SharedFolder的固定文件夹时,mod_rewrite将在匹配的RewriteCond文件夹名称上激发并redirect到RewriteMap中指定的相应共享文件夹。 我的虚拟主机configuration: LoadModule dbd_module modules/mod_dbd.so LoadModule authn_dbd_module modules/mod_authn_dbd.so DBDriver mysql DBDParams "host=db.example.com user=username pass=password dbname=webdav" <VirtualHost *:80> Servername webdav.example.com DocumentRoot /var/www Options +FollowSymlinks RewriteLog "/var/log/httpd/rewrite.log" RewriteLogLevel 5 RewriteEngine on RewriteRule ^(.*) /webdav/%{LA-U:REMOTE_USER}$1 RewriteMap usergroup txt:/etc/httpd/usersingroups RewriteCond %{REQUEST_URI} ^/SharedFolder/ [NC] RewriteRule ^(.*)$ /sharedfolders/${usergroup:%{LA-U:REMOTE_USER}} [L] <Directory "/var/www"> DAV on Options +Indexes AuthName "example.com" […]
我已经添加了一个目录到我的网站的公用文件夹,并在其中放置了下面的.htaccess文件: AuthName "Restricted Area" AuthType Basic AuthUserFile /path/to/.htpasswd AuthGroupFile / Require valid-user .htpasswd文件存在并具有有效的内容。 在该站点的公用文件夹中,有一个带有以下重写规则的.htaccess文件: RewriteBase / RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . index.php 有了这个设置,我的/protected文件夹不受保护。 如果我不改变重写规则,Apache似乎没有读取我的/protected/.htaccess文件,并且我的/protected文件夹不受保护。 如果我评论重写,试图访问我的/protected目录会导致密码提示,正如所料。 我修改了根.htaccess重写规则,我应该阻止mod_rewrite尝试重写请求到/protected文件夹,如下所示: RewriteBase / RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_URI} !^/protected RewriteRule . index.php 但是这似乎没有影响: 该请求似乎是由/index.php处理的,而不是像预期的那样提示authentication细节 /protected文件夹不受保护 该网站的其余部分正常工作 在我的受保护的文件夹中还有一个index.php文件( /protected/index.php ),内容如下: die('protected'); 任何人都可以看到这种方法的问题,或与我的修改根.htaccess重写规则?
我正在努力的组织正在实施一个新的CMS。 因此,大量的URL(比方说成千上万)将被重写为新的。 它们中的一些可能被302'ed到新的URI模式,如: RewriteRule ^/articles/articlename.html /new/article/taxonomy/and/such.html [R,L] 其他人,我们将要传递到CMS后端,以便最终用户看到相同的URL,虽然它是从内部的新path提供的,例如 RewriteRule ^/articles/article2.html /content/en/new/article/path/article2.html [PT,L] 我打算把它放在一对FAT DBM rewritemaps中,以便分别处理这两种types,但要比把它们放在那里作为数千个单独的重写规则更快。 我不清楚,如何调用这些,以便mod_rewrite只拾取任何与DBM文件中的键匹配的URL,然后用值replace它。 RewriteEngine on RewriteMap 302_rewrites dbm:/etc/httpd/conf/rewritemaps/dbmtest_302.dbm RewriteRule ^${302_rewrites:$1} ${302_rewrites:$2} [R,L] 以上不起作用。 但是我接近?
我想从Apache重写模块转换为Nginx RewriteCond %{QUERY_STRING} mosConfig_[a-zA-Z_]{1,21}(=|\%3D) [OR] RewriteCond %{QUERY_STRING} base64_encode.*\(.*\) [OR] RewriteCond %{QUERY_STRING} (\<|%3C).*script.*(\>|%3E) [NC,OR] RewriteCond %{QUERY_STRING} GLOBALS(=|\[|\%[0-9A-Z]{0,2}) [OR] RewriteCond %{QUERY_STRING} _REQUEST(=|\[|\%[0-9A-Z]{0,2}) RewriteCond %{QUERY_STRING} SELECT(=|\[|\%[0-9A-Z]{0,2}) [OR] RewriteCond %{QUERY_STRING} UNION(=|\[|\%[0-9A-Z]{0,2}) [OR] RewriteCond %{QUERY_STRING} UPDATE(=|\[|\%[0-9A-Z]{0,2}) [OR] RewriteRule ^([^.]*)/?$ index.php [L] RewriteRule ^domain/trial/cms$ index/index.php?%{QUERY_STRING} [L] RewriteCond %{HTTP:Range} ([az]+) [NC] RewriteRule ([0-9_\-]+)flv$ http://www.domain.com [R,L] RewriteCond %{ENV:byte-ranges-specifier} !^$ RewriteRule ([0-9_\-]+)flv$ http://www.domain.com [R,L] […]
我需要得到mod_rewrite来做到以下几点 http://abc.com -> https://www.abc.com https://abc.com/login -> https://www.abc.com/login http://www.abc.com?x=3 -> https://www.abc.com?x=3 https://abc.com/login?x=1 -> https://www.abc.com/login?x=1 http://www.abc.com/login?x=3 -> https://www.abc.com/login 我有以下,在我的abc.com.conf虚拟主机文件,但它不能正常工作 <VirtualHost *:80> ServerName abc.com ServerAlias www.abc.com RewriteCond %{HTTP_HOST} ^abc\.com RewriteRule ^(.*)$ https://www.abc.com/$1 [R=permanent,L] RewriteCond %{HTTPS} off RewriteRule (.*) https://www.abc.com/%{REQUEST_URI} </VirtualHost> <VirtualHost *:443> ServerName abc.com ServerAlias www.abc.com RewriteCond %{HTTP_HOST} ^abc\.com RewriteRule ^(.*)$ https://www.abc.com/$1 [R=permanent,L] </VirtualHost> 其他人可以帮我吗? [编辑澄清]
我正试图从一个旧的主机名redirect到新的。 到目前为止我已经得到了 RewriteEngine On RewriteCond %{HTTP_HOST} ^foo$ [NC,OR] RewriteCond %{HTTP_HOST} ^foo.company.com$ [NC] RewriteRule ^(.*) http://bar.company.com/$1 [R=301] 但是当我去foo.company.com/dir/page.html我不会redirect。 我究竟做错了什么?
国际化的用户可见URL(全部在一个服务器上): http://example.us/example/path http://example.de/beispiel/pfad URLpath应该在内部翻译(用于mod_rewrite进一步处理): /en_US/example/path /de_DE/beispiel/pfad 将文化前缀添加到path中的一种好方法是什么?
目前,我正在为一个最近改变其结构的网站在.htaccess文件中应用各种301redirect。 一切工作正常,除了包含特殊字符的url,对于这些我得到404错误。 例如,以下具有注册商标符号(®)的指令可显示404页: RedirectMatch 301 ^/directory/link-with®-special-character(/)?$ somelink.com RedirectMatch 301 ^/directory/link-with%c2%ae-special-character(/)?$ somelink.com 我也尝试使用Redirect , RewriteRule和周围的双引号的url,似乎没有任何工作。 有谁知道可能发生什么事情或处理这些types的指令的正确方法? 任何帮助是极大的赞赏。
有人可以请尝试使用mod重写的帮助,所以foo.domain.com被重写为domain.com/p.php?s=foo和foo.domain.com/bar到domain.com/p.php?s=foo&p=bar ? 目前我的.htaccess是: RewriteEngine On # Remove www RewriteCond %{HTTP_HOST} ^www.domain.com$ [NC] RewriteRule ^(.*)$ http://domain.com/$1 [R=301,L] # Rewrite subdomain etc. RewriteCond %{HTTP_HOST} ^(.*)\.domain\.com$ [NC] RewriteRule ^([^/]+)/?$ p.php?s=%1&p=$2 [QSA,L,NC] 但我不知道如何抓住第二个variables(是可选的,并在URI末尾的斜杠后,我试图改变条件结束?/(.*)$ ,但无济于事和我的国防部重写技能肯定是悬而未决的!
假设我希望所有对example.com的请求都redirect到abc.com。 如何将所有内容redirect到abc.com的根目录并且不包含example.com中包含的任何path或参数? 例如 example.com/index.py?var=1 should go to abc.com 我在我的.htaccess中试过 RedirectPermanent / http://www.abc.com 但它是这样做的: example.com/index.py?var=1 goes to abc.com/index.py?var=1