1

试,

  <IfModule mod_rewrite.c>
  RewriteEngine On
  RewriteCond %{REQUEST_METHOD} ^TRACE
  RewriteRule .* - [F]
  RewriteCond %{HTTP_HOST} ^(.*)dev\.example\.edu$ [NC]
  RewriteRule ^/test(.*)$ http://dev.example.edu/test/index.php/test$1 [NC]
  </IfModule>

在 apache 2.2 服务器上,让这个重写工作隐藏路径的“index.php/test”部分。

我尝试过的所有内容要么在地址栏中循环 url 部分(index.php/test),要么给出“重定向太多”错误。

我怀疑等式的“测试”部分在两边都把它扔掉了,但我不知道如何让它工作。

我只想: dev.example.edu/test/index.php/test* 重写为: dev.example.edu/test/*

谢谢

4

2 回答 2

1
于 2009-11-30T23:41:26.970 回答
0

根据 webmasterworld 的吉姆(谢谢!)

“[P] 标志在指定 URL 处向服务器调用反向代理请求;也就是说,它打开一个新的传出 HTTP 连接并向该服务器发送请求。因此,至少,您的配置是两次尽可能慢,只使用原始的工作规则,因为您的服务器正在通过 HTTP 向自己发送一个新请求,而不是仅仅从非默认映射的文件路径中提供内容。

在我看来,所需要的只是内部重写,以便对 URL http://dev.example.edu/distribution/上的资源的请求由服务器文件路径 /distribution/index 处的脚本生成的内容提供服务.php/分布/"

RewriteEngine on 
# 
# Return 403-Forbidden response to TRACE requests 
RewriteCond %{REQUEST_METHOD} ^TRACE 
RewriteRule .* - [F] 
# 
# Internally rewrite requests for URL-path /recreation/<anything> 
# to filepath /eel/index.php/recreation/<anything> 
RewriteCond %{HTTP_HOST} ^dev\.example\.edu [NC] 
RewriteRule ^/recreation/(.*)$ /ee1/index.php/recreation/$1 [L] 
# 
# Internally rewrite requests for URL-path /distribution/<anything> 
# to filepath /distribution/index.php/distribution/<anything> 
RewriteCond %{HTTP_HOST} ^dev\.example\.edu [NC] 
RewriteRule ^/distribution/(.*)$ /distribution/index.php/distribution/$1 [L]

所以我认为我只是让它变得比它必须的更复杂。我已经删除了 P 标志并从重写器中删除了完整的服务器地址。

于 2009-12-01T16:10:30.993 回答