您好我已经find了许多mod-rewrite和Apache的资源,但我还没有成功的做一个工作的例子。 下面的例子适用于 ✓WORKS example.com/en/page1.php☞example.com/page1.php?ln=en (内部redirect) ✓WORKS example.com/page1.php☞example.com/en/page1.php (redirect) ✓WORKS example.com/en/☞example.com/index.php?ln=en (内部redirect) ✓WORKS example.com/☞example.com/en/ (redirect) ✓WORKS example.com/blahblah☞example.com/en/error.php (redirect) ✓WORKS example.com/zh/blahblah☞example.com/zh/error.php (redirect) ✖FAILS example.com/de☞example.com/en/error.php (redirect – 应该是example.com/de/ ) ✖失败example.com/de/blahblah☞example.com/en/error.php (redirect – 应该是example.com/de/error.php ) <IfModule mod_rewrite.c> RewriteEngine On DirectorySlash On # Force hostname without www REDIRECT RewriteCond %{HTTP_HOST} !^example\.com [NC] RewriteCond %{HTTP_HOST} !^$ RewriteRule ^(.*)$ http://%1/$1 [R=301] # […]
我是一个新的系统pipe理员,试图设置一系列的网站,将www的非www版本重写为www版本。 我知道这是一个被打死的话题,但是我search了互联网,找不到任何答案。 所以:我的网站应该在www.example.com上。 我已经尝试在Amazon的Route 53中为www.example.com设置DNS作为我的apex域,以及为www变体设置cNAME别名的example.com。 我可以让我的网站在没有任何问题的情况下响应裸域,并通过上面的CNAME别名将www版本别名为非www。 我然而不能得到DNS解决的www版本。 目前名称服务器正在指向www DNSlogging。 我可以告诉我的服务器正在遭受打击,因为刷新裸域正确地重写URL并显示在访问日志中。 但是,DNS不解决www变体。 再次,如果我切换到非www版本,我没有问题服务的网站,并从wwwredirect到非www。 这只是让www DNS解决这个问题,这让我感觉很难受。 下面是我的Apache虚拟主机configuration。 <VirtualHost *:80> ServerName www.example.com ServerAlias example.tbid.promocampaigns.com ServerAlias example.com ServerAdmin [email protected] DocumentRoot /var/www/public_html/example.tbid.promocampaigns.com/ CustomLog /var/log/httpd/example.tbid.promocampaigns.com-access_log combined TransferLog /var/log/httpd/example.tbid.promocampaigns.com-transfer_log ErrorLog /var/log/httpd/example.tbid.promocampaigns.com-error_log <Directory /var/www/public_html/example.tbid.promocampaigns.com/> allowoverride all order allow,deny allow from all options +includes rewriteengine on </Directory> RewriteEngine On RewriteCond %{HTTP_HOST} !^www\.example\.com [NC] RewriteCond […]
我在Ubuntu下工作。 每次我重新启动apache2,它告诉我,jk_module已经加载,所以它跳过它。 问题:我认为我错误configuration了一些东西,所以我改变了它,但是因为它没有被重新加载,所以没有改变。 那么,我怎样才能重新加载mod_jk?
我有一个奇怪的问题,我试图在Apache下CentOS 7 mod_wsgi下运行一个烧瓶应用程序( https://github.com/pyfarm/pyfarm-master )无法连接到本地postgresql服务器 – 但只有当说apache已经使用systemctl从systemd启动。 如果我在命令行上使用/usr/sbin/httpd -DFOREGROUND手动启动apache(systemd说明使用相同的命令),一切正常。 Apache,Postgresql和mod_wsgi几乎没有改变来自CentOS仓库或EPEL的默认安装。 pyfarm-core和pyfarm-master已经在pip的帮助下安装了。 除了将基于主机的身份validation设置为“信任”localhost的所有内容之外,postgresqlconfiguration与默认值没有任何关系: # "local" is for Unix domain socket connections only local all all trust # IPv4 local connections: host all all 127.0.0.1/32 trust # IPv6 local connections: host all all ::1/128 trust 之后,我创build了一个用户和一个数据库 CREATE USER pyfarm WITH PASSWORD 'pyfarmpw'; CREATE DATABASE pyfarm WITH OWNER […]
背景: 为了减less包含wordpress安装的git repos的回购大小,我们从回购中删除静态资产。 大部分工作已经完成,但我有一个障碍。 我已将资产重新定位到S3存储桶,并使用.htaccess RedirectPermanent,以便将本地媒体的请求redirect到s3存储桶。 这是很好的pipe理所有在一个新的地方的现有资产,而无需修改wp数据库。 但是,对于新添加的资产,我们使用“Amazon S3和Cloudfront”插件将它们上传到服务器后自动移动到同一个S3存储桶。 然而,为了工作,我需要使用THE_REQUEST将RedirectPermanent改为RewriteRule,这样只有媒体的GET请求才会指向S3存储桶。 这是因为“Amazon S3和Cloudfront”插件需要允许将文件作为caching本地上传,并从中推送到S3存储桶。 以下是我们目前在.htaccess中的内容: RedirectPermanent /media https://s3-us-west-2.amazonaws.com/bucket/media # BEGIN WordPress <IfModule mod_rewrite.c> RewriteEngine On RewriteBase / RewriteRule ^index\.php$ – [L] RewriteRule ^assets/(.*) /wp-content/themes/theme/assets/$1 [QSA,L] RewriteRule ^plugins/(.*) /wp-content/plugins/$1 [QSA,L] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . /index.php [L] </IfModule> 我对Apache Rewrite规则和条件不是很满意,在格式化比赛正则expression式方面我特别弱,而且我的专业水平和实际编写重写规则的能力也会更好。 我已经阅读了一些关于如何使用THE_REQUEST的在线示例,我知道我需要这样的东西: #there's definitely more that […]
我不小心在Ubuntu 12.04 LTS服务器上安装了以下软件包: ppa:ondrej/php5 。 事实certificate,它从Apache 2.2升级到Apache 2.4,打破了现有的安装。 我已经删除了该软件包,但这还不足以恢复该网站。 我还需要做些什么来恢复?
我在本地主机(MAMP)中使用mkdir($folder_path, 0755)它的工作原理,但移动到VPS后,我使用LAMP失败。 夹 方向path是/var/www/html/assets/images/图像文件夹info: 所有者:根 组:根 八进制:755 文件夹var , www , html , assets都相同 的phpinfo apache2handler Apache版本Apache / 2.2.15(CentOS) 服务器pipe理员root @ localhost 用户/组apache(48)/ 48 核心 safe_mode本地值关主值closures 我试图通过下面的函数让用户通过上传文件创build文件夹 $folder_path = '/var/www/html/backstage/assets/images/0'; if ( mkdir($folder_path, 0755) ) { …move_uploaded_file();} 如何解决? (我应该改变任何关于Linux使用命令行权限?)任何build议将不胜感激,这是我第一次构build服务器..
我有2个Apache服务器(使用PHP): 承载网页的公共服务器A,具有域名等 承载一些服务(构build为PHP应用程序)的公共服务器B,这些服务仅由服务器A使用(例如,PHP应用程序中的A使用curl函数调用服务器B PHP应用程序)。 也就是说 – B只对某些指定的服务器开放端口,包括A.没有给B分配域名,B只能通过使用B的IP地址被其他应用程序(例如服务器A应用程序)访问。 B在互联网上“保持低调”的意图。 我的意图是为B生成一个自签名的SSL证书来encryptionA和B之间的任何通信(通信可能涉及一些私人数据)。 但是有两个问题: SSL证书包含通用名称(域名),但服务器B没有。 IP地址可以用作通用名称吗? 证书是否有效? 目前我还不清楚服务器A上Apache基础设施的哪个组件会使用服务器-B证书,因此会encryption和解密交换的消息。 很明显,浏览器是这样做的,但在我的情况下,只有两个Apache服务器都有它的PHP应用程序。 我知道有更好的方法来pipe理这个任务 – 把服务器A和B放在(虚拟的)私人networking中,防止与外部的B直接通信(但由于组织原因,这是不可能的)。 但也许我的预期configuration可以工作?
我正在整理我的服务器。 我想用我的networking服务器作为前端只有端口80/443开放的pipe理员。 我专注于在Apache服务器访问的端口上运行的服务。 我有一个运行在www.example.com:631上的cups服务器,我希望将Apache设置为redirect到cups.example.com,因为我有一个DNS条目。 我使用代理,redirect/重写还是使用VirtualHost? 试着 <VirtualHost ??> ServerName cups.example.com ProxyRequests Off ProxyPreserveHost On ProxyPass / http://cups.example.com:631 ProxyPassReverse / http://cups.example.com:631 </VirtualHost> 任何想法都会很棒,最后我会总结一下。
我有一台服务器,安装VestaCP(apache2是后端,nginx是前端)。 另外,我成功安装了ruby,gitlab shell和gitlab。 当我input sudo -u git -H bundle exec rake gitlab:env:info RAILS_ENV=production 一切都显示OK。 还有一个问题 – 为它configuration服务器。 我试图把这个复制到新的模板,但是apache2在它之后不会启动。 现在我有一个由vestacp和gitlab提供的干净的Web服务器安装,所以它不需要“修复”Apache2服务器。