2014-09-11 105 views
0

我在根目录下有一个目录/新闻,我也有一个/新闻清理路径。 我在/ news目录中有一些子目录和文件。与目录同名的干净路径

我需要支持干净的路径/新闻(有时具有相同的额外$ _GET参数),并允许链接到真实/新闻目录中的真实文件和子目录。

我目前的.htaccess的样子:

RewriteCond %{REQUEST_FILENAME} !-f 
    RewriteCond %{REQUEST_FILENAME} /news/?$ [OR] 
    RewriteCond %{REQUEST_FILENAME} !-d 
    RewriteCond %{REQUEST_URI} !=/favicon.ico 
    RewriteRule^index.php [L] 

但也有一些问题,Ajax请求(存在于普通用户的请求没问题)到/新闻路,如果有一些GET参数,它总是在路径末尾添加斜线,例如我输入example.com/news,因此它重定向到example.com/news/。

如何在这种情况下使用与现有目录相同的干净路径?

+0

尝试评论'RewriteCond%{REQUEST_FILENAME}/news /?$ [OR]'line – anubhava 2014-09-11 07:00:52

+0

@anubhava在这种情况下,我从example.com/news请求的/ news目录获取内容。我想从/ news干净的路径中获取内容。 – murphy 2014-09-11 11:20:45

+0

从哪里'/ news'将从哪里获得内容?如果不是'/ news/index.php'? – anubhava 2014-09-11 11:27:10

回答

0

以下规则应该在根目录的.htaccess为你工作:

RewriteEngine On 
RewriteBase/

RewriteCond %{REQUEST_URI} !=/favicon.ico 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_URI} ^/news/?$ [OR] 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule^index.php [L] 

确保没有/news/.htaccess来覆盖它。

+0

结果无差异。但是,我看到第一个对“http:// domain.com/news”的ajax请求被重定向(301)为“http:// www.domain.com/news”,但我禁用了www。前缀在htaccess(我使用标准Drupal文件http://cgit.drupalcode.org/drupal/tree/.htaccess?id=7.31与uncommented关于www前缀转发到非WWW的2条线) – murphy 2014-09-12 21:29:31

+0

那么测试这个一个新的浏览器,以避免旧的缓存'www'加法。 – anubhava 2014-09-12 21:34:21