我目前在/public_html/.htaccess中使用以下去除.php扩展名和强制结尾斜线。 # Remove .php extension RewriteCond %{THE_REQUEST} ^GET\ /[^?\s]+\.php RewriteRule (.*)\.php$ /$1/ [L,R=301] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_URI} ^/(.+)/$ RewriteCond %{DOCUMENT_ROOT}/%1.php -f RewriteRule ^(.*)/$ $1.php [L] # Force trailing slash RewriteCond %{REQUEST_FILENAME}.php -f RewriteRule .*[^/]$ $0/ [L,R=301] 这完美的工作,但是,/ public_html的子文件夹中有一些PHP文件,我们不希望被重写。 如何修改重写+结尾斜杠以仅应用于/ public_html文件夹中的PHP文件,或者指定该规则适用的PHP文件列表? 更新:在我的情况下,我相信最好的解决scheme将剥离PHP扩展(并添加尾部斜杠)只显式指定的文件,而不是创build基于文件夹的条件。 更新2:工作解决scheme: #Remove PHP extension from named files RewriteCond %{REQUEST_FILENAME} !-d […]
我正在使用一个简单的.htaccess来处理一切与PHP脚本: RewriteEngine on RewriteRule . index.php 我的index.php只是回应服务器variables(使用print_r($_SERVER) ); 一切工作正常,我在URL中input任何东西,并显示index.php内容。 但是,考虑到这种结构: test/ # document root folder/ # empty folder index.php .htaccess 我注意到访问[site]/folder首先将浏览器redirect到[site]/folder/ ,然后显示正确的index.php内容。 为什么发生这种情况? 是不是重写规则应该redirect一切“原样”? 这与虚拟主机一起使用,以在本地testing网站。 configuration与最低限度。 在我的.htaccess之前是否可以加载其他的apache文件? <VirtualHost *:80> ServerName test.local DocumentRoot /Library/WebServer/Documents/test/ </VirtualHost> 目前使用OS X 10.10。
我正在尝试使用Apache24 server mod_rewrite模块,但我无法加载它。 我知道有很多关于这个话题的问题,我经历了所有这些,但似乎没有任何工作。 这些是我一直沿用的步骤— CHANGED httpd.conf文件进行了这些更改: 一个。 LoadModule rewrite_module modules/mod_rewrite.so 湾 将AllowOverride None更改为AllowOverride All 重新启动Apache服务器 使用命令提示符命令httpd -M检查加载的模块。 我可以看到那里的mod_rewrite模块已经加载。 我附上下面的图片。 但执行所有这些步骤后,我看不到mod_rewrite作为加载模块在phpinfo 。 如上图所示,没有装载mod_rewrite模块。 另外作为一个狂野的黑客,我甚至尝试使用.htaccess文件重写url,但这是行不通的。 Apache似乎忽略了.htaccess文件,尽pipe我把这个文件放在我的根目录下。 Note: I am running `PHP` as an apache module Using `WAMP` stack Using `localhost` as server 我需要这个模块严重的URL重写的目的。 你们可以build议一些其他的方式来加载这个模块? 编辑 我试图从虚拟主机重写URL,因为答案表明模块已加载,它不依赖于.htaccess和info.php 。但stil不是redirect。 我在下面添加Virtual host设置— <VirtualHost *:80> <Directory "/Apache24/htdocs"> Options FollowSymLinks AllowOverride […]
我有一台Mac Mini Server,运行macOS Sierra(10.12.2)和macOS Server(5.2)。 这是一个内置的Apache服务器,它被设置为监听端口80和443。 文档可以通过HTTP和HTTPS访问。 但是,只要在.htaccess文件中使用SSLRequireSSL指令,就会停止工作。 在浏览器中,当访问https://www.example.com/path/document ,我看到以下内容: 被禁止 您无权访问此服务器上的/path/文档。 Apache服务器在www.example.com端口80 请注意,错误消息提到端口80,即使它通过HTTPS /端口443服务(我用curl检查了这一点 – 所以浏览器redirect不是一个问题在这里)。 但这可能与问题的根源有关。 在Apache错误日志中,显示以下内容: [Sun Jan 29 16:38:07.674342 2017] [ssl:error] [pid 82204] [client 127.0.0.1:50195] AH02219:访问/ Users / Glorfindel / wwwroot / path / document失败,原因:需要SSL连接 .htaccess文件中的其他指令也可以工作(例如Options -Indexes )。
我想让人们从指定的IP访问我的网页。 不过,我在Cloudflare后面。 获取用户IP的唯一方法是从X-Forwarded-For标头。 但我不能相信X-Forwarded-For ,因为人们可以绕过Cloudflare并直接访问我的服务器IP(假设他们可以幸运地猜测我的服务器IP)。 所以,我想允许来自Cloudflare的特定X-Forwarded-For IP列表。 我知道Cloudflare的IP列表 。 这是我到目前为止。 这样对吗? SetEnvIF X-Forwarded-For "xxxx" AllowIP <RequireAny> <RequireAll> <RequireAny> Require ip 199.27.128.0/21 Require ip 173.245.48.0/20 Require ip 103.21.244.0/22 Require ip 103.22.200.0/22 Require ip 103.31.4.0/22 Require ip 141.101.64.0/18 Require ip 108.162.192.0/18 Require ip 190.93.240.0/20 Require ip 188.114.96.0/20 Require ip 197.234.240.0/22 Require ip 198.41.128.0/17 Require ip 162.158.0.0/15 Require […]
我有一个主域名和一个由商业网站托pipe服务使用Apache服务器托pipe的二级域名。 每个域都有自己的.htaccess文件。 对于主域,我只有一个SSL证书。 但是,如果我inputURL框(或search引擎指向) HTTPS://secondarydomain.com , HTTPS://secondarydomain.com收到有关无效安全证书的网页警告。 当我确认exception时,浏览器显示绑定到证书的主域。 我看了post: SSL的优先级 。 在这种情况下,我可以做什么没有什么从二级域从HTTPSredirect到HTTP? 编辑澄清:我想服务器应用SSL证书只到主域。 子域是完全不相关的域。 访问这些子域名的人只会看到一个不相关网站名称的SSL证书。 这就是为什么我希望有一些东西,我可以放在这些子域的.htaccess文件,使服务器绕过或忽略主域的SSL证书。 编辑:我也尝试了无条件的redirect与这些行.htaccess中 RewriteEngine on Redirect / "http://mydomain .com/"
我正在运行WordPress的博客,一个“绅士”正在偷我的post。 我已经决定让自己的生活变得困难,我想阻止我的博客中的盗链图片。 我使用htaccesstools com / hotlink-protection /来生成.htaccess的一部分来防止热链接。 RewriteEngine on RewriteCond %{HTTP_REFERER} !^$ RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?marusiak.pl [NC] RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?wojcieh.net [NC] RewriteRule \.(jpg|jpeg|png|gif)$ https://wojcieh.net/wp-content/uploads/2017/06/fuck-you-stealer.gif [NC,R,L] 我创build了testing博客,看看我是否可以将我的图片热链接https://stagingwpblog.wordpress.com/2017/03/13/test-blog-post/和图像仍在显示。 我在这里做错了什么?
所以我在我的本地apache XAMPP服务器在根目录中的.htaccess文件中的下面的代码,它正常工作100%。 但是,当我尝试部署到Heroku时,它不起作用。 我已经尝试了在互联网上发现稍微修改版本执行相同的事情,但没有一个似乎工作。 这应该是删除.php文件的扩展名,并允许像/api/products/all文件api.php存在和products/all只读入PHP $_SERVER['PATH_INFO']和输出是基于它们是什么。 Options +MultiViews RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^([^\.]+)$ $1.php [NC,L] 我不知道有关.htaccess吨,所以任何帮助,将不胜感激。
我想redirect我的通配符子域到我的主域使用.htaccess的URL中的子域作为GET参数。 我想要发生的事情的例子: billy.example.com redirect到 www.example.com/profile?user_name=billy 以下是我基于本网站上的其他答案放在一起的现行规则: RewriteCond %{HTTP_HOST} ^(.*).example.com RewriteRule ^(.*)$ http://www.example.com/shop?user_name=%1 [R,L] 但是,当redirect发生时,我得到以下URL“redirect循环”错误: www.example.com/profile?user_name=www 我已经看到这个网站回答了几个不同的方式,但不幸的是他们都没有为我工作。 (我正在使用PHP,并且我在主机面板中设置了*作为子域。)
我可以使用htaccess限制访问我的网站,并在.htaccess中指定用户名/密码,所以我不必担心密码文件?