【问题标题】:How can i use .htaccess to point to a directory different from the one on the url bar我如何使用 .htaccess 指向与 url 栏上的目录不同的目录
【发布时间】:2015-05-22 13:31:01
【问题描述】:

我一直在尝试使用 .htaccess 指向我网站用户的模板目录。

用户登录后指向的目录是 mysite.com/lu/user1/ 而我要加载的内容是 mysite.com/lu/default/

我想要实现的是从默认模板目录加载内容,以便我可以在必要时修改页面,它将反映在所有用户帐户页面上。

这整件事就是说:当用户在 mysite.com/lu/user1/ 中时,让来自 mysite.com/lu/default/ 的内容在不显示 mysite.com/lu/default/ 的情况下提供给用户网址栏。如果用户位于 mysite.com/lu/user1/settings/ 或 mysite.com/lu/user1/settings/?rw=yyy&uui=uuu 则让服务目录为 mysite.com/lu/default/settings/ 或 mysite .com/lu/default/settings/?rw=yyy&uui=uuu

我也不希望用户直接访问模板目录,例如 mysite.com/lu/default/

此代码已发布给我,但我不知道 htaccess 语法

RewriteEngine On
RewriteBase /

RewriteCond %{REQUEST_URI} !^/(index|excluded1|excluded2)\.php [NC]
RewriteRule ^((?!u/).+)$ u/$1 [L,NC]

感谢您的光临。

【问题讨论】:

    标签: php apache .htaccess mod-rewrite directory


    【解决方案1】:

    你可以在/lu/目录中使用这个.htaccess:

    RewriteEngine On
    RewriteBase /lu/
    
    # block direct access to /lu/default
    RewriteCond %{THE_REQUEST} /lu/default [NC]
    RewriteRule ^ - [F]
    
    RewriteRule ^([A-Z0-9]{6})/?$ profile.php?cod=$1 [L,QSA] 
    
    # route every user/* to default/*
    RewriteRule ^\w+/(.*)$ default/$1 [L,NC]
    

    【讨论】:

    • 感谢您尝试解决我的谜题我如何在我的网站的基础上匹配这样的字符串 5D33W5B8、SIUK1PJ5(8 个字符大写字母数字代码):例如 mysite.com/5D33W5B8 我尝试了这个,但它没有工作RewriteEngine on RewriteRule ^/?((?:[a-z][a-z]*[0-9]+[a-z0-9]*))$ profile.php?cod=$1 [L, NC]谢谢你的帮助。
    • 您可以使用:RewriteRule ^([A-Z0-9]{6})/?$ profile.php?cod=$1 [L,QSA]
    • 太好了,答案已更新。您可以通过单击我的答案左上角的勾号将答案标记为已接受。
    • 请在这里帮忙,我试过RewriteRule ^/new?/$ new.php [L,QSA]希望匹配并指向new.php,但它没有用。请问我该怎么做?
    • 也可以这样做# stop hotlinking <br> RewriteCond %{HTTP_REFERER} !^$ <br> RewriteCond %{HTTP_REFERER} !^(http|https|ftp)://(www.)?(mysite1|mysite2|mysite3).(com|net|info|org|mobi|biz)/ [NC] <br> RewriteRule .(gif|jpg|png)$ - [F]
    【解决方案2】:

    您应该能够重写到default 目录。你可以试试这个规则。

    RewriteEngine On
    RewriteBase /
    
    #redirect to the home page if they request direct default directory
    RewriteCond %{THE_REQUEST} {A-Z}{3,}\ /lu/default/?([^&\ ]*)
    RewriteRule ^ / [R=301,L]
    
    #internally rewrite to the default directory QSA flag will send any query string attached.
    RewriteRule ^lu/(?!default)([^/]+)/?(.*?)/?$ /lu/default/$1/$2 [L,QSA]
    

    【讨论】:

    • 感谢您尝试解决我的谜题我如何在我的网站的基础上匹配像这样的 5D33W5B8、SIUK1PJ5(8 个字符大写字母数字代码)的字符串:例如 mysite.com/5D33W5B8 我尝试了这个,但它没有在 RewriteRule 上工作 RewriteEngine ^/?((?:[a-z][a-z]*[0-9]+[a-z0-9]*))$ profile.php?cod=$1 [L, NC] 谢谢寻求帮助。
    猜你喜欢
    • 2015-04-16
    • 2014-11-25
    • 2015-04-21
    • 2018-12-17
    • 2021-01-13
    • 2017-01-09
    • 2011-10-13
    • 2014-09-16
    • 1970-01-01
    相关资源
    最近更新 更多