【问题标题】:How to remove and avoid url directories in htaccess如何删除和避免 htaccess 中的 url 目录
【发布时间】:2015-07-16 07:09:15
【问题描述】:

我正在尝试让我的网站重写网址。我已将以下内容放入根目录中的 .htaccess 文件中。

RewriteEngine On

#would be nice to remove member-pages from the URL but no idea how.
#RewriteRule ^members/(.*)/?$ /$1 [NC,R]

#This part works though! 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 

RewriteRule ^(.+)/?$ ./members/$1/ [L]

到目前为止,需要 mydomain.com/someUserName 或 mydomain.com/someUserName/ (带有斜杠),如果存在,将顺利加载 mydomain.com/members/someUserName/ 中的页面。这就像一个宝石。

我现在想要的(并且正在尝试使用第一个重写规则)是采用 mydomain.com/members/someUserName 或 mydomain.com/members/someUserName/ 并将其显示为 mydomain.com/someUserName在网址中。

我该怎么做?提前致谢!

【问题讨论】:

    标签: apache .htaccess mod-rewrite redirect url-rewriting


    【解决方案1】:

    如果我理解正确,您想将 domain.com/members/foo 重定向到 domain.com/foo ,您可以使用以下规则:

    RewriteEngine On 
    RewriteCond %{THE_REQUEST} /memebers/([^\s]+) [NC]
    RewriteRule ^ /%1 [R,L]
    
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    
    RewriteRule ^([^/]+)/?$ ./members/$1 [NC,L]
    

    【讨论】:

    • 它给了我错误“Firefox 检测到服务器正在以永远不会完成的方式重定向对该地址的请求。”是的,我想将 domain.com/members/foo 重定向到 domain.com/foo 另外,您在第一个“成员”中有错字;但即使修复也无济于事。
    • 我把底线改回原来的样子:RewriteCond %{THE_REQUEST} /member/([^\s]+) [NC] RewriteRule ^ /%1 [R,L] RewriteCond % {REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^(.+)/?$ ./member/$1/ [L] 它正在工作! domain.com/members/foo 转到 domain.com/foodomain.com/members/foo/ 转到 domain .com/foodomain.com/foo 转到 domain.com/foo,但是 domain.com/foo/转到 domain.com/foo/ 。有没有办法让它也转到 domain.com/foo
    • 史蒂文,是的,有办法解决这个问题,您可以在最后一个重写行的捕获组内添加一个 ? ,就像这样 ^(.+?)/? $
    • 我刚刚尝试过,但没有任何运气。当我执行 domain.com/foo/ 时,斜线保持不变
    猜你喜欢
    • 1970-01-01
    • 2019-10-03
    • 2011-05-15
    • 2011-09-24
    • 2012-03-19
    • 2012-06-25
    • 2013-05-18
    • 1970-01-01
    • 2013-05-28
    相关资源
    最近更新 更多