我开始与Zend框架,并在他们的网站上是这样的: http://framework.zend.com/manual/en/zend.controller.html#zend.controller.quickstart.go.rewrite RewriteEngine On RewriteCond %{REQUEST_FILENAME} -s [OR] RewriteCond %{REQUEST_FILENAME} -l [OR] RewriteCond %{REQUEST_FILENAME} -d RewriteRule ^.*$ – [NC,L] RewriteRule ^.*$ index.php [NC,L] 如何把这个好用? 我该怎么做才能使这个工作? 现在,当我加载我的网站,我得到500内部服务器错误… 🙂 我应该改变REQUEST_FILENAME到别的吗? 我还是很新的htaccess和mod_rewrite … 即时通讯使用WAMPSERVER …
我想写一个redirect规则,说:“如果HTTP_REFERER包含某个QUERY_STRING ,请执行此操作…” 换句话说,我有这种情况: HTTP_REFERER: http://www.example.com/admin.php?foo=bar …我想说:“如果HTTP_REFERER包含QUERY_STRING = bar',请执行此操作…”有意义吗? 大声笑 也许这不可能? 我对mod_rewrite比较陌生。
这是一个有趣的问题: 我试图将系统上的几个文件分成许多包,并且能够在不明确指定文件所在的包的情况下访问它们。 下面是一个例子:说一个文件/package1/one.htm在/package1而/package2/two.htm在/package2 。 使用下面的configuration,我将能够直接访问它们,例如。 http://localhost/one.htm RewriteCond %{DOCUMENT_ROOT}/package1%{REQUEST_URI} -f RewriteRule ^(.*) /package1$1 [L] RewriteCond %{DOCUMENT_ROOT}/package2%{REQUEST_URI} -f RewriteRule ^(.*) /package2$1 [L] RewriteCond %{DOCUMENT_ROOT}/package3%{REQUEST_URI} -f RewriteRule ^(.*) /package3$1 [L] 问题是我希望能够添加更多的包,而不更新这个Apacheconfiguration文件(并且不必重新启动Apache)。 我正在想的是: RewriteCond %{DOCUMENT_ROOT}/package(.*)%{REQUEST_URI} -f RewriteRule ^(.*) /package%1$1 [L] 但是,不幸的是,上面的代码不起作用,因为从RewriteCond ( (.*) )中找不到匹配,然后将其应用到RewriteRule 。 至less这是我的理解。 你能想出解决这个问题的创意方法吗?
我有一个这样设置的重写规则: RewriteCond %{DOCUMENT_ROOT}/cache/%{REQUEST_URI} -f RewriteRule ^(.*)$ cache/$1 [QSA,PT,L] 这个规则的简单解释:它检查在caching目录中是否存在请求的文件。 如果是这样,那么它就提供caching目录。 例如, http://somehost.tld/about.html的请求将从http://somehost.tld/cache/about.html提供 (如果此文件存在)。 我关心的是如果RewriteRule不安全。 是否有人可以像这样请求一个URL,用双重句点来移动一个目录: HTTP://somehost.tld/../../private_file.txt 所以导致private_file.txt从我的apache公共文件夹上的目录服务?
我拥有一个Linux的Apache网站,我宿主exe文件下载。 现在,当用户点击这个链接到我的网站(发布在另一个网站上): http://mysite.com/downloads/file.exe 我需要dynamic检查他们的用户代理并redirect到任一 http://mysite.com/downloads/file-1.exe 要么 http://mysite.com/downloads/file-2.exe 在我看来,我有两个select: 放一个.htaccess文件,说明.exe文件应该被认为是脚本。 然后编写一个脚本来检查用户代理并将其redirect到放置在另一个文件夹中的真实exe文件。 调用这个脚本file.exe。 使用Apache mod-rewrite将file.exe指向redirect.php。 哪个更好? 任何其他的考虑? 谢谢。
我正在尝试使用中文字符创build一个规则 #RewriteRule ^zh(.*) /中文版$1 [L,R=301] 创build错误500时,我将文件更改为UTF-8 #RewriteRule ^zh(.*) /%E4%B8%AD%E6%96%87%E7%89%88$1 [L,R=301] redirect到/%25E4%25B8%25AD%25E6%2596%2587%25E7%2589%2588(基本上用%25replace%) 任何人都熟悉这个问题?
我有一个服务器与VBulletin论坛(在Apache 2.2,CentOS下工作)。 它在.htaccess中的默认设置如下: RewriteEngine on RewriteCond %{HTTP_HOST} ^gsmforum\.ru RewriteRule (.*) http://www.gsmforum.ru/$1 [R=301,L] # If you are having problems or are using VirtualDocumentRoot, uncomment this line and set it to your vBulletin directory. RewriteBase / RewriteCond %{REQUEST_FILENAME} -s [OR] RewriteCond %{REQUEST_FILENAME} -l [OR] RewriteCond %{REQUEST_FILENAME} -d RewriteRule ^.*$ – [NC,L] # Forum RewriteRule ^threads/.* showthread.php [QSA] […]
build立: 通过使用具有不同端口号的虚拟主机(Apache侦听)来在单个IP上configuration多个SSL域, Windows 2003上的Apache 2.2.8(对此没有评论) 太多的Windows XP用户,所以SNI不是一个select 使用这种方法有可能是错误的,但现在可以使用。 虚拟主机设置: # secure domain 1 <VirtualHost IP:443> SSL stuff specifying certificate etc. ServerName domain1.org </VirtualHost> # secure domain 2 <VirtualHost IP:81> SSL stuff for domain2.org ServerName domain2.org </VirtualHost> 目标: domain2.org docroot中的一些文件夹需要安全。 我使用.htaccess文件将URL重写为端口81上的https: RewriteEngine On RewriteCond %{SERVER_PORT} !^81$ RewriteRule (.*) https://%{HTTP_HOST}:81%{REQUEST_URI} [R] 假设我把.htaccess放在文件夹' secfolder '中。 访问http://domain2.org/secfolder将成功重写为https://domain2.org:81 / secfolder。 […]
我有一个通配SSL证书,工作正常: <VirtualHost *:443> ServerName star.mydomain.com DocumentRoot /dev/null SSLEngine On SSLCertificateFile /etc/httpd/conf.d/star.mydomain.com.crt SSLCertificateKeyFile /etc/httpd/conf.d/star.mydomain.com.key SSLCertificateChainFile /etc/httpd/conf.d/star.mydomain.com.gd_bundle.crt </VirtualHost> 然后,我有在SSL端口上侦听的各个子域: <Virtualhost *:80 *:443> ServerName staging.mydomain.com DocumentRoot /var/www/staging.mydomain.com/ CustomLog logs/staging.mydomain.com.log combined AccessFileName .htaccess DirectoryIndex index.php index.html </VirtualHost> <Virtualhost *:80 *:443> ServerName www.mydomain.com DocumentRoot /var/www/www.mydomain.com/ CustomLog logs/www.mydomain.com.log combined AccessFileName .htaccess DirectoryIndex index.php index.html </VirtualHost> 这是伟大的。 我可以去http://staging.mydomain.com/或https://staging.mydomain.com/ ,一切都很开心。 现在诀窍是,据我所知,有知道的方式来知道在这个configuration请求是否SSL。 例如,即使是SSL请求,所有环境variables都指向非SSL的请求。 我怀疑这是由于mod_ssl的实现。 […]
我在这里遇到了一些麻烦。 我有这几个重写规则,我认为不起作用。 我的主要目的是限制页面,只允许特定的IP或networking块。 RewriteEngine On RewriteLog "/data/wre/var/logs/modrewrite.log" RewriteLogLevel 5 RewriteCond %{REMOTE_ADDR} !^192\.168\.10\..* RewriteCond %{REMOTE_ADDR} !^72\.139\.201\..* RewriteCond %{REMOTE_ADDR} !^129\.233\.4\..* RewriteCond %{REMOTE_ADDR} !^208\.118\.97\32 RewriteRule ^/solutions https://example.com/account/signin?go=outside [R,NE,NC] 我再次testing,似乎不工作? 我做错了吗?