Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/url/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Apache 在EZ发布站点上仅使用httpd.conf重写index.php表单URL_Apache_Url_Mod Rewrite_Ezpublish - Fatal编程技术网

Apache 在EZ发布站点上仅使用httpd.conf重写index.php表单URL

Apache 在EZ发布站点上仅使用httpd.conf重写index.php表单URL,apache,url,mod-rewrite,ezpublish,Apache,Url,Mod Rewrite,Ezpublish,我试图使用ApacheRewriteRules从url中删除index.php,但我遇到了麻烦 以下URL当前解析为正确的页面: 但是出于SEO的原因,我需要自动且不可见地删除url的/index.php/部分。大量的谷歌搜索和对堆栈溢出的搜索只会让我走上死胡同,要么彻底破坏网站,要么把我留在原地不动 Httpd.conf示例: <VirtualHost 109.200.2.197:80> <Directory /var/www/sites/ms_dev>

我试图使用ApacheRewriteRules从url中删除index.php,但我遇到了麻烦

以下URL当前解析为正确的页面:

但是出于SEO的原因,我需要自动且不可见地删除url的/index.php/部分。大量的谷歌搜索和对堆栈溢出的搜索只会让我走上死胡同,要么彻底破坏网站,要么把我留在原地不动

Httpd.conf示例:

<VirtualHost 109.200.2.197:80>

  <Directory /var/www/sites/ms_dev>
       Options FollowSymLinks ExecCGI
       AllowOverride All
    Options +Indexes
  </Directory>

  <FilesMatch "\.(js|css|html|pdf|jpg|gif)$">
    SetOutputFilter DEFLATE
  </FilesMatch>

  CustomLog /var/log/httpd/ms-dev combined
  ErrorLog /var/log/httpd/errors-ms-dev

  AcceptPathInfo On

  php_value date.timezone Europe/London
  php_value magic_quotes_gpc 0
  php_value magic_quotes_runtime 0


  RewriteEngine On
  RewriteRule ^/awstats - [L]
  RewriteRule ^/hold\.php - [L]
  RewriteRule content/treemenu/? /index_treemenu.php [L]
  RewriteRule ^/images/.* - [L]
  RewriteRule ^/var/storage/.* - [L]
  RewriteRule ^/var/[^/]+/storage/.* - [L]
  RewriteRule ^/var/cache/texttoimage/.* - [L]
  RewriteRule ^/var/[^/]+/cache/texttoimage/.* - [L]
  RewriteRule ^/var/[^/]+/cache/public/.* - [L]
  RewriteRule ^/var/cache/public/javascript/.* - [L]
  RewriteRule ^/design/[^/]+/(stylesheets|images|javascript)/.* - [L]
  RewriteRule ^/share/icons/.* - [L]
  RewriteRule ^/extension/[^/]+/design/[^/]+/(stylesheets|images|lib|flash|javascripts?)/.* - [L]
  RewriteRule ^/packages/styles/.+/(stylesheets|images|javascript)/[^/]+/.* - [L]
  RewriteRule ^/packages/styles/.+/thumbnail/.* - [L]
  RewriteRule ^/favicon\.ico - [L]
  RewriteRule ^/robots\.txt - [L]
  RewriteRule ^/crossdomain\.xml - [L]

  RewriteRule !\.(gif|jpe?g|png|css|s|ico|js|jar|html)|var(.+)storage.pdf(.+)\.pdf$ /index.php

  ServerAdmin test@morningstaronline.co.uk
  DocumentRoot /var/www/sites/ms_dev
  ServerName ms_dev
  ServerAlias dev.morningstaronline.co.uk
  ServerAlias test.morningstaronline.co.uk
  DirectoryIndex index.php

</VirtualHost>

选项如下symlinks ExecCGI
允许超越所有
选项+索引
SetOutputFilter放气
CustomLog/var/log/httpd/ms-dev组合
ErrorLog/var/log/httpd/errors-ms-dev
上的AcceptPathInfo
php_value date.timezone欧洲/伦敦
php\u值魔法\u引号\u gpc 0
php_值魔术_引号_运行时0
重新启动发动机
重写规则^/awstats-[L]
重写规则^/hold\.php-[L]
是否重写规则内容/treeemenu//index_treeemenu.php[L]
重写规则^/images/*-[L]
重写规则^/var/storage/*-[L]
重写规则^/var/[^/]+/storage/*-[L]
重写规则^/var/cache/texttoimage/*-[L]
重写规则^/var/[^/]+/cache/texttoimage/*-[L]
重写规则^/var/[^/]+/cache/public/*-[L]
重写规则^/var/cache/public/javascript/*-[L]
重写规则^/design/[^/]+/(样式表|图像| javascript)/.-[L]
重写规则^/share/icons/*-[L]
重写规则^/extension/[^/]+/design/[^/]+/(样式表|图像|库| flash | javascripts?/*-[L]
重写规则^/packages/styles/+/(样式表|图像| javascript)/[^/]+/.-[L]
重写规则^/packages/styles/+/thumbnail/*-[L]
重写规则^/favicon\.ico-[L]
重写规则^/robots\.txt-[L]
重写规则^/crossdomain\.xml-[L]
重写规则!\。(gif | jpe?g | png | css | s | ico | js | jar | html)| var(+)storage.pdf(+)\.pdf$/index.php
服务器管理员test@morningstaronline.co.uk
DocumentRoot/var/www/sites/ms\u dev
服务器名ms_dev
ServerAlias dev.morningstaronline.co.uk
ServerAlias test.morningstaronline.co.uk
DirectoryIndex.php
这是基于从live server继承的一个旧的httpd.conf,该服务器还提供index.php完整(不需要)的URL


任何帮助都将不胜感激。

建议的重写规则中似乎缺少最后一行:

RewriteRule .* /index.php

参考:

在.htaccess中使用此代码:

# to make any index.php/foo to /foo in browser (external redirect)
RewriteRule ^index\.php/(.+)$ $1 [L,NC,R]

# to forward any /foo to /index.php/foo (internal redirect)
RewriteRule ^((?!index\.php).*)$ index.php/$1 [L,NC]

谢谢你们两位的快速回复,但问题仍然存在,当使用任何一种解决方案,或者两者都使用时。输入其中一个或两个将显示正确的页面,但index.php仍保留(在前者中)。我的服务器上是否有一个我不知道的配置选项?再次感谢您在eZ Publish中是否尝试强制“ForceVirtualHost”配置指令为true?您可以在此处找到更多详细信息: