RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !\.php$ RewriteRule ^(.*)/(.*)/(.*)$ $1.php?Action=$2&id=$3 RewriteRule ^(.*)/(.*)$ $1.php?Action=$2 RewriteRule ^(.*)$ $1.php 这是我的.htaccess 。 但只有第一个RewriteRule作品。 如果我评论其他规则,其他人就会很好地工作,但是他们不能一起工作。 我想要的是具有多个参数的干净的URL。 我没有任何关于这个问题的线索。 我GOOGLE了很多,我发现的所有信息都和我的代码一样。
有人可以看看下面的代码的语法,让我知道如果是正确的 – 我的意图是排除在“允许”部分中指定的IP范围的htaccess,其余所有人在访问该网站时都要求进行身份validation。 这只是“否认”每一个。 允许从指定的IP范围不应该要求htaccess,但它要求每一个htaccess。 任何人都可以证实这一点,并帮助我做这个工作: Options FollowSymLinks AllowOverride None AuthUserFile /etc/.htpasswd AuthGroupFile /dev/null AuthName EnterPassword AuthType Basic require valid-user Order deny,allow Deny from all Allow from 30.21.37. Allow from 113.11.23.23
嗨,我已经写了一些重写,但从我可以告诉从日志看来,规则继续执行,所以,虽然正确的结果是在执行中,但最终的重写是不正确的。 理想情况下,我需要使用[END]标志,但是我不能升级Apache 2.2的服务器软件,所以我将不得不解决这个问题。 我试图把“/ wedding?url = emily-and-john-2013”改写为“/ wedding / emily-and-john-2013”。 因为我使用CodeIgniter,我首先需要将“index.php / wedding / …”改写为“/ wedding / …”。 这是我迄今为止的规则。 <IfModule mod_rewrite.c> RewriteEngine On RewriteBase / #Checks to see if the user is attempting to access a valid file, #such as an image or css document, if this isn't true it sends the #request to index.php […]
我有一个简单的.htaccessredirect不是文件或目录的一切index.php RewriteEngine on # if a directory or a file exists, use it directly RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d # otherwise forward it to index.php RewriteRule . index.php 这对80和443端口是完美的,但在https://mysite.com:450上提供404,如https://mysite.com:450/controller/action这样的url被调用。 什么需要修改?
我正在尝试创build一个mod重写规则来正确地更改现有的url结构,如下所示: 旧:somesite.com/scripts/data/database.cgi?ArticleID=29154&report=SingleArticle&file=Data 进入如下所示的东西: 新:somesite.com/oldarticle/id29154.htm 我所需要的基本上是采取ArticleID并将其插入到新的url结构。 我提出的是不工作,但我知道我很接近: RewriteEngine On RewriteRule ^(.*)/database\.cgi\?ArticleID=([0-9]+)&report=SingleArticle&file=Data$ /oldarticle/id$1.htm [R=301,NC,L] # Permanent Move 我已经尝试了上面的许多变体,并且可能在初始string中缺less一些需要重写的东西。 任何帮助/build议将不胜感激!
按照预期 ,在htaccess中重写下面这个HTTPS请求不会被重写: https://example.com/system/anything 不重写 http://example.com/system/anything 但是,意外的是,这个HTTPS请求被重写了: https://example.com/preview/anything 被重写 http://example.com/index.php/preview/anything 为什么是这样? 一些其他的事实/意见: /system/是服务器上的实际path。 但是/preview/不是一个真正的path – 这是一个在CMS中有意义的URL段,例如,/ /index.php/preview/anything /preview/anything是CMS如何获取/preview/anything URL的请求。 其他非系统的URL会正确地重写(从HTTPS到HTTP),并正确传递给index.php。 例如, https://example.com/real 被重写 http://example.com/real 这是一整套规则: <IfModule mod_rewrite.c> RewriteEngine On RewriteBase / # Force HTTPS for System URLs RewriteCond %{REQUEST_URI} ^/system(.*)$ [NC] RewriteCond %{HTTPS} !=on RewriteRule ^(.*)$ "https://example.com/$1" [R=301,L] # Force HTTP for Other URLs, but not: […]
我有一个Grails应用程序。 我想移出用户上传到我的web-app目录之外的目录,在磁盘上的其他位置的所有图像。 然后,我想允许我的应用程序在页面上提供它们,但用户无法访问该目录。 我知道一种方法,如果使用ImageController来读取图像并将其stream式传输到视图,但有一些折衷例如caching。 我想知道是否有一种方法可以让apache从web-app之外的本地目录提供图片,并将其限制在应用程序中。
似乎这个服务器redirect问题可能比wordpress堆栈交换更适合serverfault。 最初我们在example.com上有一个静态营销网站,在www.joesexample.com/blog上有wordpress博客。 我们现在将该博客移至blog.joesexample.com。 然而,这个博客是托pipe在不同的服务器(相同的服务器名称,但不同的WP特定的主机)。 原来的营销网站仍然在原来的其他服务器上。 所以大概在www.joesexample.com/blog的原始主机上,我们将清空该文件夹并添加一个需要redirect301的.htaccess,以便任何人进入joesexample.com/blog将被永久redirect到blog.joesexample.com。以及将所有postredirect到新的位置。 例如,将www.joesexample.com/blog/2014/01/my-post-title/redirect到blog.joesexample.com/2014/01/my-post-title/ 基于谷歌的结果将做以下工作: RewriteEngine ON RewriteCond %{REQUEST_URI} ^/blog RewriteRule ^(.*)$ http://blog.joesexample.com/$1 [R=301,L,P] 不知道,因为他们是在不同的服务器(ips),如果这很重要,我想这不会因为域名是相同的,如果该规则将只覆盖主博客主页redirect或所有职位,我不知道它是否会redirect以年/月/post标题格式的post。 最后,我之所以先问这里,而不是简单地自己testing,是因为它是另一个人访问这个特定的服务器,所以我想相当有信心,它会在我有他们尝试之前工作。 更新 – 走在前面,并试图让人使用上面的htaccess。 这一切似乎工作,除非它不重写URL字段中的url。 我的意思是,如果我去http://www.joesexample.com/blog ,现在正确显示来自http://blog.joesexample.com的内容,但是URL字段仍显示http://www.joesexample。 com / blog 。 所以这听起来像我仍然需要一个额外的htaccess规则,将改变URL栏中的URL外观。 有什么想法吗?
我目前正在升级到Apache 2.4。 现在困扰我的是如何仅使用.htaccess创build公共子目录。 外部目录由AuthType Basic保护 以前,该目录包含以下.htaccess: Satisfy Any Allow from all 我不知道如何在Apache 2.4中重现这一点。 我尝试了以下的任何组合,没有运气: AuthType None Require all granted AuthMerging Or
我在我的Apache 2.4.7安装中有以下configuration脚本: <Directory "/www"> Options Indexes FollowSymLinks AllowOverride All <RequireAll> Require all granted Require not ip ip.range.A ip.range.B </RequireAll> RewriteEngine On RewriteRule ^faq/(\w+)/(\d+)/?$ faq.php?code=$1&num=$2 [NC] ErrorDocument 403 /www/faq.php?code=web&num=403 </Directory> 而且,当我尝试使用其中一个阻止的IP地址查看页面时,我收到此错误: 此外,尝试使用ErrorDocument处理请求时遇到403禁止错误。 因为我想为来客提供两种403服务; 我必须redirectIP范围A和B限制的用户才能显示faq/WEB/403/页面。 有没有办法阻止用户使用这些IP的访问,并显示他们我的自定义ErrorDocument页面? 我尝试使用以下代替requireAll标记( 在RewriteCond指令中定义): RewriteCond %{REMOTE_HOST} ^ip.range.A [OR] RewriteCond %{REMOTE_HOST} ^ip.range.B RewriteRule /faq/WEB/403/ [L,R] 但无济于事。 用户可以在后一种情况下自由访问页面。 当前configuration文件如下(并且没有用户被阻止访问网页): <Directory "/www"> Options Indexes FollowSymLinks AllowOverride […]