.htaccess .htacces重写规则不起作用

.htaccess .htacces重写规则不起作用,.htaccess,mod-rewrite,url-rewriting,.htaccess,Mod Rewrite,Url Rewriting,嗨people@stackoverflow, 也许我对规则的运作有一个基本的误解。也许不是。尽管如此,我已经花了两天的时间试图解决这个问题,没有任何进展 这是目前的情况: 我有一个Joomla网站,打开了SEF和mod_rewrite 这将导致URL: mysite.com/index.php?option=com\u remository&Itemid=7 改写为: mysite.com/sub-directory/sub-directory/0000-Business-files/ 这些是m

嗨people@stackoverflow,

也许我对规则的运作有一个基本的误解。也许不是。尽管如此,我已经花了两天的时间试图解决这个问题,没有任何进展

这是目前的情况:

我有一个Joomla网站,打开了SEF和mod_rewrite

这将导致URL: mysite.com/index.php?option=com\u remository&Itemid=7

改写为:

mysite.com/sub-directory/sub-directory/0000-Business-files/

这些是my.htaccess(所有标准Joomla)中当前使用的行

但这是行不通的。我做错了什么?或者,也有可能,我是否错过了何时以及如何使用mod_rewrite的要点


rgds,Eric首先,apache的默认行为通常是允许直接URL映射到底层文件系统(相对于文档根),当您想要解决这个问题时,应该使用RewriteRule。看看您的问题,您似乎想要浏览文件系统,因此不应该使用重写规则

如果mysite.com/sub+diretory/sub+directory/0000+Business+files/不起作用(没有您的规则),我想知道:您的服务器上有那个目录结构吗?也就是说,它看起来像这样吗

[document root]/index.php
[document root]/sub directory/sub directory/0000 Business files/
如果没有,我不确定我是否理解你想要实现的目标,以及你所说的“引导到正确的页面”是什么意思。您能否提供用户提供的示例URL,以及您希望为用户提供服务的相应URL(或文件系统路径)

关于你的重写规则,我甚至不确定它是否被允许,我很惊讶你没有收到500个内部服务器错误。RewriteRule接受两个参数(匹配模式和替换)和一些标志(可选),但由于$1和$2之间的空间,您提供了三个参数(+标志)

编辑:我把图案弄错了,但还是没什么意义。它匹配任何至少有一个破折号的URL,然后选择第一个破折号前后的部分。因此,对于像“服务器上的this-is-a-URL-path/to-a-file/”这样的URL,1美元将是“this”,2美元将是“服务器上的is-a-URL-path/to-a-file/”。同样,如果我有一些示例URL及其相应的重写,我可以帮助您找到正确的模式

另一方面,URL中不允许使用空格,但浏览器和服务器可能会在幕后进行一些工作,以正确拾取PDF

RewriteRule ^([^\-]*)\-(.*)$ $1 $2 [N]
[document root]/index.php
[document root]/sub directory/sub directory/0000 Business files/