Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/.htaccess/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.htaccess重定向beatify URL/隐藏结构_.htaccess_Mod Rewrite_Redirect_Apache2 - Fatal编程技术网

.htaccess重定向beatify URL/隐藏结构

.htaccess重定向beatify URL/隐藏结构,.htaccess,mod-rewrite,redirect,apache2,.htaccess,Mod Rewrite,Redirect,Apache2,我的目标是获取该格式的URL www.mydomain.com(/dir1)?(/dir2)?/(index.php|login.php)((:?\?code=)[a-Z0-9]+)? 强制将浏览器url更改为: www.mydomain.com/(home|welcomepage)/code/%1/ 一个非常简单的例子是: www.mydomain.com/dir1/dir2/index.php?code=khkdh239 更改: www.mydomain.com/home/code

我的目标是获取该格式的URL

www.mydomain.com(/dir1)?(/dir2)?/(index.php|login.php)((:?\?code=)[a-Z0-9]+)?
强制将浏览器url更改为:

www.mydomain.com/(home|welcomepage)/code/%1/
一个非常简单的例子是:

 www.mydomain.com/dir1/dir2/index.php?code=khkdh239
更改:

 www.mydomain.com/home/code/khkdh239/
并将内部重定向到

 www.mydomain.com/dir1/dir2/index.php?code=khkdh239
这是我的许多尝试之一

#RewriteCond %{QUERY_STRING} !^$  # I was experimenting with simple urls, no ?code=....
#RewriteRule .? - [S=2]
RewriteRule ^(?:dir1/)?(?:dir2/)?(?:login.php)$ /welcomepage/? [R=301,NC]
RewriteRule ^.*welcomepage.*$ code/login.php? [QSA,L]
根据我的尝试结果得出的观察结果:

  • 规则

    RewriteRule ^welcomepage/$ code/login.php? [QSA,L]
    
    RewriteRule ^(?:dir1/)?(?:dir2/)?(?:login.php)$ /welcomepage/? [R=301,NC,L]
    RewriteRule ^.*welcomepage.*$ code/login.php? [QSA,L]
    
    没有重定向,所以我使用了
    ^.*welcomepage.$

  • 规则

    RewriteRule ^welcomepage/$ code/login.php? [QSA,L]
    
    RewriteRule ^(?:dir1/)?(?:dir2/)?(?:login.php)$ /welcomepage/? [R=301,NC,L]
    RewriteRule ^.*welcomepage.*$ code/login.php? [QSA,L]
    
    重定向到
    www.domain.com/welcomepage/
    ,但内部重定向失败

  • 规则

    RewriteRule ^(?:dir1/)?(?:dir2/)?(?:login.php)$ /welcomepage/? [R=301,NC]
    RewriteRule ^.*welcomepage.*$ code/login.php? [QSA,L]
    
    重定向到第二个链接,但不重定向到第一个链接

  • 我在站点的配置中添加了一个文件设置,但是它似乎不起作用
  • 在某个时候,重定向工作正常,但是文件上载等失败(
    POST
    operation)
  • 问题:
  • 是否有人知道如何在不丢失文件上传等功能的情况下实现隐藏重定向。
  • 如果没有,有人知道怎么做吗 正确设置重定向日志,以便调试重定向 更有效率
  • PS:我知道堆栈溢出中存在多个问题,我已经仔细阅读了它们以及.htaccess重定向手册,但是似乎总是存在一些问题


    提前感谢大家。

    要将URL重定向到漂亮的URL,请选中
    %{THE_REQUEST}
    变量:

    RewriteCond %{THE_REQUEST} GET\ (?:/dir1)?(?:/dir2)?/index\.php\?code=([^&]+) [NC]
    RewriteRule ^index\.php$ /home/code/%1/ [R=301,L]
    
    接下来,您希望友好URL在内部寻址其他脚本:

    RewriteRule ^home/code/([^/]+)/?$ /dir1/dir2/index.php?code=$1 [NC,L]
    

    最终未经提炼的解决方案是,和我的结合

    我将提供
    .httaccess
    代码,以防任何人面临类似问题

    重要提示:可以找到所有重定向标志([NC、R、p、L]等)

    为什么大多数重定向都不起作用 因为我的.htacces文件位于
    /{ROOT\u DIRECTORY\u OF_SITE}/dir1/
    而不是
    /{ROOT\u DIRECTORY\u OF_SITE}/

    如何实现GET URL的隐藏重定向 为了实现这一点,我遵循了建议,并检查了所有
    GET
    请求中
    请求是否遵循了特定的正则表达式。在这些情况下,真实地址被转发到了一个伪造的地址。我使用了
    R=301
    ,这是永久重定向,只有在我确信它是正确的情况下才使用。调试时使用
    R=302
    和私人浏览

    # Redirect dir1/dir2/login.php?code=password  to fake address mydomain.com/signup/?code=password
    RewriteCond %{THE_REQUEST} GET\ /?(?:dir1/)?(?:dir2/)?login\.php\?code=([^&]+) [NC]
    RewriteRule ^.*$ /signup/%1/ [R=301,L]
    
    #Redirect fake address mydomain.com/signup/?code=pasword internaly to real address
    RewriteRule ^signup/([^/]+)/$ /dir1/dir2/login.php?code=$1 [NC,L]
    
    如何在不丢失文件上载等功能的情况下实现POST URL的隐藏重定向。 在这里,我必须有点创造性。在文件上传表单中,我将重定向改为指向一个伪造的、美化的
    url

    例如,要将post请求发送到
    mydomain.com/signup/send mail/#login
    我使用了:

    <form role="form" method="POST" action="/signup/send-mail/#login" id="login">
    
    [p]
    标志相当于
    [L]
    ,但它也允许POST数据重定向,因为它可以作为代理。
    [L]
    标志只是告诉系统不要在
    .htaccess
    文件中向下继续,因为这将是最后一次重定向(简单地说,有关详细信息,请参阅)

    .htaccess
    非常感谢所有回复我的帖子并帮助我获得此版本的人。
    .htaccess

    code是.htaccess所在目录的子目录。is.htaccess位于
    文档根目录下
    ?它位于dir1下。应该把它放在上面的目录中吗?我想我通过将
    .htaccess
    移动到根目录来修复它。非常感谢。我会确保明天一切正常。是的,确实按照您的规则,它应该放在
    文档根目录下,通常可以正常工作,但是当我上传文件时,因为这是一个post操作,无法获取重定向,因此重定向不起作用,并显示原始URL。有没有一种方法可以隐藏IP,而不丢失功能?