【问题标题】:Modify URL with .htaccess [#Q1.]使用 .htaccess [#Q1.] 修改 URL
【发布时间】:2021-05-12 10:15:04
【问题描述】:

我想使用 .htaccess 修改服务器上的 URL,但我遇到了一些问题。

结帐#Q2. here

规则 #1:

https://example.com/site/index.php

https://example.com/site/

应该转换为短网址。

https://example.com/

规则 #2:

https://example.com/

应该加载完整的网址而不展开。

https://example.com/site/index.php.

规则 #3:

https://example.com/a/site/index.php

https://example.com/b/site/index.php

https://example.com/a/site/

https://example.com/b/site/

应该转换为短网址。

https://example.com/a/

https://example.com/b/

请注意:我想从 URL 中删除 site 文件夹,但我不知道写 .htaccess,任何帮助将不胜感激。

【问题讨论】:

  • 请显示您当前的 .htaccess。 /site//a/site/ 也是真实目录吗?
  • 我当前的.htaccess 是空的,我刚刚尝试了我提到的问题的解决方案,是的localhost/site/localhost/a/site/ 是真正的目录,我将来会更改名称。
  • @Arghadip,对于Rule #4: should not block other URL's,您能否提供一些您在这里谈论的网址的示例?

标签: apache .htaccess ubuntu mod-rewrite friendly-url


【解决方案1】:

您可以在站点根目录 .htaccess 中尝试这些规则(假设 sib 目录中没有其他 .htaccess):

RewriteEngine On

# matches /site/ or /site/index.php or 
# /a/site/index.php or /b/site/index.php
# captures a/ or b/ or an empty string in %1
# redirects to /a/ or /b/ or /
RewriteCond %{THE_REQUEST} \s/+([ab]/|)site/(?:index\.php)?[?\s] [NC]
RewriteRule ^ /%1 [L,R=302,NE]

# matches a/ or b/ or empty (landing page)
# rewrites to a/site/index.php or b/site/index.php or site/index.php
RewriteRule ^([ab]/)?$ $1site/index.php [L,NC]

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{DOCUMENT_ROOT}/$1.php -f
RewriteRule ^(.+?)/?$ $1.php [L]

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-06-26
    • 2021-05-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多