我在Apache上使用重写规则疯了。 基本上我想实现的是重写任何url,如: http[s]://www.example.com/something 至 https://www.example.com 我在apache上有一个VHost,如下所示: <VirtualHost *:80> ServerName example.com ServerAlias example DocumentRoot /var/www/html/example_courtesy ServerAdmin [email protected] RedirectMatch 404 /\.git RedirectMatch 404 /\.svn <Directory /> Options FollowSymLinks AllowOverride None </Directory> <Directory /var/www/html/example_courtesy> Options Indexes FollowSymLinks MultiViews AllowOverride None Require all granted DirectoryIndex index.php indice.htm </Directory> RewriteEngine on RewriteCond %{SERVER_PORT} !^443$ RewriteRule ^.*$ https://%{SERVER_NAME}%{REQUEST_URI} [L,R] </VirtualHost> <IfModule […]
我recentley完成了一个项目,我把一个漂亮的大网站移动到一个漂亮干净的小型网站。 这意味着我必须对大量被search引擎编入索引的页面进行说明,并使用301 Redirects将它们适当地redirect到新网站上的相关页面。 有超过300个唯一的url,我必须redirect。 我使用apache mod_rewrite模块来实现redirect,因为大部分的URL都包含你的标准Redirect语句不能读取的GET parameters 。 所以例如我有这样的url: HTTPS://olddomain/product.html PROD_ID = 143&ID = 234 和一个像这样的redirect: RewriteCond %{QUERY_STRING} prod_id=143&id=234$ RewriteRule ^product\.html$ /products/product-a? [L,R=301] 几乎所有的情况都是如此。 我想我的问题是,我正确地写下了300个像上面的个人redirect,还是有一个“更干净”的方式来做到这一点? 我听说有许多rewrite rules可以减慢服务器速度。 我会很感激你对这个家伙的意见,如果这不是正确的地方问道歉,我会删除并张贴在相关的交stream。
我有一台服务于单个虚拟主机的Apache服务器https://app.example.com 。 由于遗留的原因,该网站也被称为另一个名称https://myapp.example.com 。 对于连接到传统名称的用户,他们会得到一个浏览器证书警告,因为很明显,证书通用名称与主机名称不匹配。 是否有可能使用Apache重写规则来避免此警告,并让客户端连接到正确的主机? 我试过了 RewriteCond %{HTTP_HOST} !=app.example.com$ [NC] RewriteCond %{HTTP_HOST} !="" RewriteRule ^ https://app.example.com/%{REQUEST_URI} [R=301,L] 哪个没做什么
我有一个Apache HTTPD服务器(这已经让我疯狂了)。 我configuration了几个tomcat工作者。 所以https://something.domain/WebApp1/通过AJP激活指定的tomcat上的web应用程序。 但是,由于命名约定更改,我必须将pathhttps://something.domain/app1/redirect到https://something.domain/WebApp1/ 。 所以用户实际上只使用新的约定(WebApp1)。 所以我去了httpd.conf文件,并激活mod_rewrite: LoadModule rewrite_module modules/mod_rewrite.so 在“LoadModule”块的下面,我添加了下面的代码片段: <IfModule mod_rewrite.c> RewriteEngine On RewriteRule ^/app1$ WebApp1 [R] </IfModule> 我重新启动Apache的httpd服务,并试图访问…/app1 ,它只是带领我到了404.我需要做什么才能让这个运行?
我的.htaccess文件中有以下代码: RewriteCond %{HTTP_HOST} !^www\. RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L] 上面的代码是为了将www添加到域,如果它没有www 。 但是我有一个域名: myloadbalancername-432566808.us-west-1.elb.amazonaws.com (来自AWS Elastic Load Balancer的DNS),并且该域名不能与www 。 那么,如何为所有的域请求添加www ,除了特定的域呢? RewriteCond %{REQUEST_URI} !myloadbalancername RewriteCond %{HTTP_HOST} !^www\. RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L] 我试着用上面的代码来检查域名是否有这个单词,然后检查域名是否没有www ,但没有成功。 我是.htaccess初学者,所以我不知道我做错了什么。
我正在设置Drupal Open Atrium,并在configuration中途收到一个错误: Clean Url必须可用,并且可以使用OpenAtrium。 https://www.drupal.org/docs/7/configuring-clean-urls/enable-clean-urls告诉我运行sudo a2enmod rewrite ,这发生: Enabling module rewrite. To activate the new configuration, you need to run: service apache2 restart 但是当我然后运行sudo service apache2 restart我得到以下错误: Job for apache2.service failed because the control process exited with error code. See "systemctl status apache2.service" and "journalctl -xe" for details. systemctl status apache2.service返回: ● apache2.service – […]
我有一个Magento网站与Apache2工作,每天我得到机器人抓取url,我不想要,我想返回429特定的url。 我已经在我的htaccess中尝试过 <ifModule mod_rewrite.c> RewriteEngine On RewriteCond %{HTTP_USER_AGENT} (Yahoo!\Slurp|semrushbot) [NC] Redirect 429 /shop/ricerca/ </ifModule> 我的机器人在哪里: yahoo slurp googlebot yandex semrush等 和保护的path是: /path/toprotect/ /path/to/protect2/ 拖尾访问日志似乎我的代码段不工作。 任何人都可以帮助我? 最终如果太乱,我只会使用nginx作为反向代理,并从那里我有更多的经验过滤机器人
Tomcat不允许在URL中存在任何'''(双引号)字符,因此根据RFC 7230将其视为无效字符。 然而,我有很多的服务客户仍然采取像http://abcd.com/userservice?user="donald" URL我的服务,我正在寻找的方式来重写这个URL为http://abcd.com/userservice?user=%20donald%20 。 我必须这样做多个服务(〜20)。 我看着https://stackoverflow.com/questions/1279681/mod-rewrite-replace-underscores-with-dashes,但它不能帮助我的用例。 Apache似乎不让用户重写查询参数。 有什么build议么?
我在/ etc / hosts中有一行把localhost重写了一下: 127.0.0.1 foo.bar 等价物可以在不修改主机文件的情况下完成,以某种方式用Apache重写或类似的东西?
我们有一个新的CentOS框,我们需要启用漂亮的URL /永久链接。 我们正在运行安装了mod_rewrite的Apache,但是我知道我需要编辑一些configuration文件来启动和运行基础知识。 哪些步骤和文件需要更改才能启动并运行?