子目录,斜杠和单个文件

时间:2013-01-24 09:06:46

标签: apache .htaccess mod-rewrite

首先,如果有人找到了更好的头衔......那就去吧! 问题是,我正在尝试设置mod重写,以便将所有这些转换为

http:// mysite/phpnuget/nuget/metadata.php

保留查询字符串参数

  • http:// mysite / phpnuget / nuget / $ metadata
  • http:// mysite / phpnuget / nuget / $ metadata / wetheaverdirstructure
  • http:// mysite / phpnuget / nuget / $ metadata /
  • http:// mysite / phpnuget / nuget / $ metadata?wetheaver = parameter
  • http:// mysite / phpnuget / nuget / $ metadata / wetheaverdirstructure?wetheaver = parameter
  • http:// mysite / phpnuget / nuget / $ metadata /?wetheaver = parameter

我通过互联网进行了几个小时的各种测试,但没有尝试过的第十个... (mysite之前的空间只允许在Stackoverflow上发布...认为它不存在!) 有人可以给我一些提示吗? 谢谢, 恩里科

(更改了标题)

1 个答案:

答案 0 :(得分:1)

你可以试试这个:

RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI}  !metadata\.php          [NC]
RewriteCond %{REQUEST_URI}  ^/phpnuget/nuget/\$metadata  [NC] 
RewriteRule  .*     phpnuget/nuget/metadata.php   [L]

它将静默地映射任何类似这样的URL:

http://mysite.com/phpnuget/nuget/$metadata/anything

要:

http://mysite.com/phpnuget/nuget/metadata.php删除了最后一个anything段。

如果传入的网址包含查询,则会以查询格式自动将其附加到metadata.php。即?this=is&a=query

以防万一,不需要QSA标志。

要使替换网址永久可见,请将最后一个[L]替换为[L,R = 301]