.htaccess 不工作(mod_rewrite)

我没有任何运气获得. htaccess mod_rewrite工作。http://www.example.com" 和 “https://www.example.com"。 如果我缺少任何内容(conf 文件等,请告诉我,我会更新它) 这是我的 .htaccess 文件(位于 @ /var/www/site/trunk/html/ ) Options +FollowSymLinks RewriteEngine on RewriteCond %{HTTP_HOST} ^www\.(.*) [NC] RewriteRule (.*) //%1/$1 [L,R=301] 我的 mod_rewrite 已启用: root@s15348441:/etc/apache2/mods-available# more rewrite.load LoadModule rewrite_module /usr/lib/apache2/modules/mod_rewrite.so 我的阿帕奇配置文件: Apache2.conf # # Based upon the NCSA server configuration files originally by Rob McCool. # # This is the main Apache server configuration file. It contains the # configuration directives that give the server its instructions....

.htaccess 从站点根目录重定向到公共文件夹,在 URL 中隐藏“公共”?

Bellow是我的网站目录结构: htdocs/ My-Project/ public/ index.php css/ img/ js/ src/ config.php templates/ library/ 我不希望直接访问该文件中的任何文件src目录。src包含我的模板和后端逻辑脚本。 我想设置我的.htaccess因此,当用户访问我的网站时(根文件夹My-Project),他们被重定向到My-Project/public/index.php。我希望URL看起来像My-Project.com在索引页面上。 有帮助吗?我犹豫不决地修改了我的.htaccess文件,因为我在这里和网上看到了许多相互冲突的建议,以实现这一目的。 答案 将此代码放在/My-Project/.htaccess: RewriteEngine On RewriteBase /My-Project/ RewriteCond %{THE_REQUEST} /public/([^\s?]*) [NC] RewriteRule ^ %1 [L,NE,R=302] RewriteRule ^((?!public/).*)$ public/$1 [L,NC] 来自: stackoverflow.com

.htaccess 文件未被读取(.htaccess 文件中的“选项-索引”不起作用)

我创建了一个仅包含以下行的 .htaccess 文件: 选项-索引 但是,仍然显示该目录的索引。 我刚刚安装了 Apache2 并使用所有默认值(我没有修改 apache2.conf 或 httpd.conf)。 操作系统:Ubuntu 12.04 (Precise Pangolin) 阿帕奇2版本:Server version: Apache/2.2.22 (Ubuntu) Server built: Feb 13 2012 01:51:56 $ ls -l .htaccess -rwxr-xr-x .htaccess 编辑: 我采纳了 lanzz 的建议并在其中添加了一些胡言乱语.htaccess文件,并发现.htaccess文件未被读取。 答案 为了使其正常工作,我添加了以下内容/etc/apache2/httpd.conf(安装Apache时默认是一个零长度文件)然后重新启动Apache。Options -Indexes在里面.htaccess文件按预期工作。 /etc/apache2/httpd.conf : <VirtualHost *:80> DocumentRoot /var/www <Directory / > </Directory> </VirtualHost> 兰兹建议添加一行乱码.htaccess文件以查看它是否正在被读取有助于诊断问题。 注意AllowOveride默认为All, 每埃文·穆拉夫斯基的注释,因此在最小集合中不需要它httpd.conf上面的行。 来自: stackoverflow.com

.htaccess 文件选项 - 子目录索引

我有以下 .htaccess 行,根目录上没有索引。 Options -Indexes 我们要添加什么才能使其传播到任何子目录,而不必为每个子目录创建一个文件? 答案 正确答案是 Options -Indexes 你一定想过 AllowOverride All https://httpd.apache.org/docs/2.2/howto/htaccess.html .htaccess 文件(或"分布式配置文件")提供了一种在每个目录的基础上进行配置更改的方法。 来自: stackoverflow.com

.htaccess 文件允许访问图像文件夹以查看图片?

我在以下 URL 中有一个图像文件夹。 www.mysite.com/uploads/ 在不同的页面上: www.mysite.com/search.php/ 我正在尝试使用正确的标签链接访问其中的图像,但是我得到: Forbidden You don't have permission to access /uploads/ on this server. 所以我开始涉足.htaccess文件,我不知道我在做什么,我尝试查看一些文档,但没有运气,我什至从另一个问题中举了一个例子..这是我的方法.htaccess文件看起来是atm: <FilesMatch "\.(gif|jpe?g|png)$"> Order allow,deny Allow from all </FilesMatch> <Directory /uploads> # All access controls and authentication are disabled # in this directory Satisfy Any Allow from all </Directory> 关于如何让它允许访问该文件夹有什么想法吗? 答案 <Directory /uploads> Options +Indexes </Directory> 来自: stackoverflow.com

.htaccess 问题:未指定输入文件

有人可以帮我弄这个吗? 我有Apache 2.2.8 + PHP 5.2.6安装在我的机器上并且.htaccess下面的代码工作正常,没有错误。 RewriteEngine on RewriteCond $1 !^(index\.php|css|gfx|js|swf|robots\.txt|favicon\.ico) RewriteRule ^(.*)$ /index.php/$1 [L] 我的托管提供商服务器上的相同代码给出了 404 错误代码和输出only: No input file specified.index.php 就在那里。 我上线了Windows XP 64-bit,他们正在运行一些Linux和PHP在CGI/FastCGI模式。 附言。CodeIgniter使用友好的 URL。 更新1: mod_rewrite已安装并开启。 我注意到如果我改变RewriteRule到/index.php?$1(问号而不是正斜杠)它进入无限循环。CodeIgniter(必需)不会以这种方式工作。 当我直接请求index.php时,主页也可以工作:example.com/index.php 我开始认为 apache 可能会认为,一旦添加了尾部斜杠,它就不再是文件,而是文件夹了。 更新2: 我错了。 Apache 正确处理这些 URL。 要求http://example.com/index.php/start/(主页)或任何其他有效地址均有效。 看来Apache只是由于某种原因不转发查询。 更新3: 只是为了清楚我想要实现的目标。 我想像这样重写地址: http://www.example.com/something/=>http://www.example.com/index.php/something/ http://www.example.com/something/else/=>http://www.example.com/index.php/something/else/ 答案 我也曾为此绞尽脑汁。 问题的关键不是 RewriteBase。 DirectoryIndex index.php RewriteEngine on RewriteBase / RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteCond $1 !^(index\.php|robots\.txt) RewriteRule ^(.*)$ index.php?/$1 [L] 来自: stackoverflow....

.htaccess,命令允许,否认,否认:

在我的.htaccess中,我有以下内容: <Limit GET POST> order deny,allow deny from all allow from all </Limit> <Limit PUT DELETE> order deny,allow deny from all </Limit> <Files .htaccess> order allow,deny deny from all </Files> 我在网上和 Apache 文档中查看过,但不明白limit get post put delete等等,但我认为,无论做什么,都在允许它再次拒绝。这对我来说没有意义,我不确定是否应该将其从.htaccess中删除。我猜第三个意味着拒绝访问.htaccess文件,但是此顺序允许,然后拒绝似乎首先允许立即拒绝。 答案 这是使用Apache配置指令的一种令人困惑的方法。 从技术上讲,第一位等同于 Allow From All 这是因为Order Deny,Allow在允许指令之前对拒绝指令进行评估。在这种情况下,拒绝并允许彼此冲突,但是允许作为最后评估的评估将与任何用户匹配,并且将授予访问权限。 现在,为了清楚情况,这种配置是不好的,应该不惜一切代价避免,因为它与未定义的行为接壤。 限制部分定义了哪些HTTP方法可以访问包含.htaccess文件的目录。 在这里,允许访问获取和邮寄方法,并拒绝使用和删除方法访问。这是一个链接,解释了各种HTTP方法是什么:http://www.w3.org/Protocols/rfc2616/rfc2616-sec9.html 但是,只要您没有直接处理非标准方法(put和delete)的自定义CGI脚本或Apache模块,使用这些限制通常是没有用的,因为默认情况下,Apache根本无法处理它们。 还必须注意的是,存在一些其他方法也可以通过限制来处理,即连接,选项,补丁,propfind,proppatch,mkcol,mkcol,复制,移动,锁定,锁定和解锁。 最后位也最肯定是没有用的,因为任何正确配置的Apache安装都包含以下配置(对于Apache 2.2和更早): # # The following lines prevent .htaccess and .htpasswd files from being # viewed by Web clients. # <Files ~ "^\....

.htaccess、YSlow 和“使用无 cookie 的域”

YSlow 的衡量指标之一是使用无 cookie 的域来提供静态文件。 “当浏览器请求静态图像并随请求发送 cookie 时,服务器会忽略 cookie。这些 cookie 是不必要的网络流量。要解决此问题,请确保使用无 cookie 的请求来请求静态组件by creating a subdomain and hosting them there。”——雅虎 YSlow 我将此解释为如果我搬家,我可以体验到绩效提升www.example.com/images 到static.example.com/images。 尽管这很容易做到,但我会在内容管理系统(Joomla/wordpress)中失去方便的能力来轻松参考并链接到这些图像。 是否可以使用 .htaccess 重定向对特定文件夹的所有请求www.example.com 到某个文件夹静态.example.com反而? 答案 是否可以使用 .htaccess 将 www.example.com 上特定文件夹的所有请求重定向到 static.example.com 上的文件夹? 可能,但效果适得其反——客户端必须发出 HTTP 请求,获取重定向响应,然后发出另一个 HTTP 请求。 这比保存单行cookie数据的成本要高很多! 此方法是否也会欺骗 CMS,使其认为图像位于其自己域的默认位置? 不。 来自: stackoverflow.com

.htaccess:不在www base dir时位于哪里

我可能需要修改我们的.htaccess文件。问题是我找不到它。我们在VHOSTS目录中彼此之间有几个子域,并且每个子域都有一个相关的.htpasswd文件。如何找到.htaccess文件在哪里。 显然,我没有设置此问题,我当然不称为Unix Admin Expert。 答案 .(DOT)文件默认情况下是在UNIX/Linux系统上隐藏的。最有可能的话,如果您知道它们是.htaccess文件,然后它们可能位于网站的根文件夹中。 如果您使用命令行(终端)访问,则仅在使用时才显示: ls -a 如果您使用的是GUI应用程序,请寻找"显示隐藏文件"或类似内容的设置。 如果您仍然没有运气,并且您在终端上,则可以执行这些命令来搜索整个系统(可能需要一些时间): cd / find . -name ".htaccess" 这将列出其使用该名称的所有文件。 来自: stackoverflow.com

.htaccess:此处不允许使用 RewriteEngine

我将 .htaccess 上传到服务器并收到Error 500 (Internal Server Error)。 在错误日志中我有以下错误: …/.htaccess: RewriteEngine not allowed here 但mod_rewrite.so已启用。 那么我需要改变吗 <Directory /> Options FollowSymLinks AllowOverride None </Directory> 到 <Directory /> Options FollowSymLinks AllowOverride All </Directory> 在里面**/etc/httpd/conf/httpd.conf**文件? 或者可能是其他什么? 这是我的 .htaccess 文件的一部分: Options All -Indexes Options +FollowSymLinks RewriteEngine On 答案 .htaccess 工作的最低配置: AllowOverride FileInfo Options 允许所有配置也将起作用: AllowOverride All 来自: stackoverflow.com

.htaccess/.htpasswd 500内部服务器错误

我正在用.htaccess阻止文件夹,这是我以前从未使用过的,并且遇到了一些麻烦。这是我拥有的 .htaccess(位于我想要阻止的文件夹中): AuthName "Username and password required" AuthUserFile /.htpasswd Require valid-user AuthType Basic .htpasswd(位于root,密码在实际文件中加密): tim:blah 我遇到了500个内部服务器错误,我不知道为什么。 答案 最有可能的问题是这一行: AuthUserFile /.htpasswd 该行应为密码文件提供完整的文件系统路径,例如 AuthUserFile /var/www/.htpasswd 要发现您的文件系统路径,您可以创建一个包含的PHP文档 echo $_SERVER['DOCUMENT_ROOT']; 来自: stackoverflow.com

.htaccess重写到路径而无需更改URL

所以,我这个问题: 基本网站位于http://example.com/ 第二个网站位于http://example.com/web2/ 人们向第二个网站提出各种要求http://example.com/myWeb/pg1和http://example.com/web2/pg2 最近,由于其他一些问题,我还需要为第二个网站有一个自定义的新途径,但也需要保持第一个网站的工作。 理论家将允许用户在以下两个地址中访问第二个网站: http://example.com/web2/ http://example.com/alternative-url-web2/ 文件夹/web2/实际上存在于服务器上,但是如何模拟文件夹/alternative-url-web2/和"重定向"请求/web2/? 请注意,我不希望浏览器上的URL更改,这必须是"无声重定向"。我还确保所有其他请求都像http://example.com/other不是第二个网站重定向。 谢谢。 Update: 根据@anubhava的说法,我可以通过添加我的.htaccess: Options +FollowSymLinks -MultiViews RewriteEngine On RewriteBase / RewriteRule ^alternative-url-web2(/.*|)$ /web2$1 [L,NC] 这可能工作正常,但我注意到以下内容: http://ex.com/alternative-url-web2被重定向到http://ex.com/web2/(更改浏览器URL); http://ex.com/alternative-url-web2/被重定向到http://ex.com/(更改浏览器URL); http://ex.com/alternative-url-web2/someRequest工作正常,不会更改浏览器URL; http://ex.com/alternative-url-web2/index.php工作正常,不会更改浏览器URL; Site Note: 在/web2/有一个.htaccess那可能是因为上面的有线重定向行为…因此,这是文件内容: <IfModule mod_rewrite.c> RewriteEngine On RewriteCond %{REQUEST_FILENAME} -f [OR] RewriteCond %{REQUEST_FILENAME} -l [OR] RewriteCond %{REQUEST_FILENAME} -d RewriteRule ^.*$ - [NC,L] RewriteRule ^(data/|js/|styles/|install/|favicon\.ico|crossdomain\.xml|robots\.txt) - [NC,L] RewriteRule ^.*$ index.php [NC,L] </IfModule> 内部重写可以index.php造成这一切?如果是,我该如何修复? 答案 通过httpd.conf然后将此代码放入您的.htaccess在下面DOCUMENT_ROOT目录: Options +FollowSymLinks -MultiViews # Turn mod_rewrite on RewriteEngine On RewriteBase / RewriteRule ^alternative-url-web2(/....

在本地浏览PHP文件时,我有一个错误 [Fri Apr 13 19:16:40 2012] [alert] [client 127.0.0.1] C:/AppServ/www/hr-website/.htaccess: Invalid command 'RewriteEngine', perhaps misspelled or defined by a module not included in the server configuration, referer: http://127.0.0.1/ 问题是什么 ? 答案 或由服务器配置中未包含的模块定义 检查以确保您有mod_rewrite已启用。 从:https://webdevdoor.com/php/mod_rewrite-windows-apache-url-rewriting 查找httpd.conf文件(通常您会在称为conf,config或沿这些行的文件中找到它) 在httpd。 还可以找到clearmodulelist的行,然后找到并确保未评论的addmodule mod_rewrite.c行。 如果是LoadModule rewrite_module modules/mod_rewrite.sohttpd.conf 文件中完全缺少该行,只需添加它即可。 示例命令 要在标准 ubuntu 中启用该模块,请执行以下操作: a2enmod rewrite systemctl restart apache2 来自: stackoverflow.com

我有来自Linux Ubuntu上运行的AWS EC2服务的服务器,并且已经安装了Apache,PHP和MySQL。 我添加了一个.htaccess在我的文档根中归档/var/www/html。 我在其中输入了此代码:ErrorDocument 404 /var/www/html/404.php但它仍然没有出现。 我一直多次输入此命令:sudo service httpd restart重新启动服务器,但没有显示更改… 我该如何解决此问题…我做错了什么? 答案 首先,请注意,.htaccess文件不需要重新启动HTTPD。.HTACCESS文件专门针对没有根的人 - IE,无法访问HTTPD服务器配置文件,并且无法重新启动服务器。由于您可以重新启动服务器,因此您不需要.htaccess文件,并且可以直接使用主服务器配置。 其次,如果.htaccess文件被忽略,则需要检查以查看AllowOverride是否正确设置了。看http://httpd.apache.org/docs/2.4/mod/core.html有关详细信息。您还需要确保将其设置在正确的范围中 - 即,在配置中的正确块中。确保你不是例如,在块中编辑一个。 第三,如果您想确保一个.htaccess文件实际上正在读取,请放入其中。.htaccess文件中的"无效行"(例如"无效行")将导致500服务器错误时,当您将浏览器指向包含该文件的目录时。如果没有,那么您没有正确配置的允许弗里德。 来自: stackoverflow.com

我有一个旧的URL(www1.test.net),我想将其重定向https://www1.test.net 我已经在网站上实施并安装了我们的SSL证书。 这是我的旧文件.htaccess: RewriteEngine On RewriteRule !\.(js|gif|jpg|png|css|txt)$ public/index.php [L] RewriteCond %{REQUEST_URI} !^/public/ RewriteRule ^(.*)$ public/$1 [L] 我如何配置我的.htaccess文件以便将URL自动重定向到https? 谢谢! 答案 Update 2016 由于这个答案受到了一些关注,我想暗示使用虚拟主机进行此操作的一种建议的方法:Apache:重定向SSL <VirtualHost *:80> ServerName mysite.example.com Redirect permanent / https://mysite.example.com/ </VirtualHost> <VirtualHost _default_:443> ServerName mysite.example.com DocumentRoot /usr/local/apache2/htdocs SSLEngine On # etc... </VirtualHost> Old answer, hacky thing鉴于您的SSL端口未设置为80,这将有效: RewriteEngine on # force ssl RewriteCond %{SERVER_PORT} ^80$ RewriteRule ^(.*)$ https://%{SERVER_NAME}%{REQUEST_URI} [L,R] 请注意,这应该是您的第一个重写规则。 Edit: 该代码执行以下操作。RewriteCond(ITION)检查请求的服务器端口是否为80(默认的HTTP-PORT,如果指定了另一个端口,则必须调整条件)。如果是这样,我们匹配整个URL(.*)并将其重定向到HTTPS-url。%{SERVER_NAME}可以用特定的URL替换,但是这样您就不必更改其他项目的代码。%{REQUEST_URI}是TLD(顶级域)之后URL的一部分,因此您将被重定向到您来自的位置,但作为HTTPS。 来自: stackoverflow.com