.htaccess,使用与目录相同的名称重写文件名

丹尼·冈萨雷斯(Danny Gonzalez)

给定的文件结构如下:

|- .htaccess (1) 
|- portfolio.html
|- portfolio(dir) -|
                   |- .htaccess (2) 

我想将任何带有/ portfolio的链接重写为/portfolio.html。问题在于,还存在一个名为Portfolio的目录。

这个问题与在这里回答的问题非常相似:
.htaccess,具有相同名称的目录和文件的正确重写,
但是不幸的是,这并不能完全解决我的问题。

以下是上述链接的可接受答案的建议解决方案:

解决方案1:手动重新路由对投资组合目录的请求以删除斜杠。

# Manually re-route portfolio/ requests to portfolio
RewriteCond %{REQUEST_FILENAME} portfolio/$
RewriteRule ^(.*)/$ $1 

# Hide extension
RewriteCond %{REQUEST_FILENAME}\.html -f
RewriteRule ^(.*)$ $1.html

不利的一面是,您必须将“组合”边缘的情况直接硬编码到重写规则中,并且仍然会导致浏览器首先被重定向到产品组合/

解决方案2:关闭DirectorySlash并删除目录存在测试

# Disable Automatic Directory detection
DirectorySlash Off

# Hide extension
RewriteCond %{REQUEST_FILENAME}\.html -f
RewriteRule ^(.*)$ $1.html

将DirectorySlash设置为Off可以最好地解决此问题,但可能会破坏您实际需要自动DirectorySlash的站点的其他部分。


确实,上述链接堆栈溢出答案的答案确实可以解决问题,但前提是目录中没有与文件名同名的.htaccess规则,即,上面显示的.htacess(2)文件中的任何rewriteRule都可以阻止此问题。在职的。

谁能建议实现这一目标的方法?谢谢

阿努巴瓦

该规则应适用于您的htaccess (2)

RewriteEngine On

RewriteCond %{REQUEST_URI}::$1 ^(.*?)/(.*)::\2$
RewriteRule ^(.*)$ - [E=BASE:%1]

# if .html exists then use it
RewriteCond %{DOCUMENT_ROOT}%{ENV:BASE}\.html -f [NC]
RewriteRule ^$ /%{ENV:BASE}.html [L]

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

.htaccess,重写与目录相同名称的文件名

来自分类Dev

htaccess-重写目录名称相同的文件

来自分类Dev

使用与pwd目录相同的名称在头上创建目录

来自分类Dev

获取名称与bash中的目录相同的打开文件

来自分类Dev

htaccess重写规则,将目录/名称重写为index.php?id

来自分类Dev

htaccess重写只获取文件名

来自分类Dev

htaccess 重写 - 无法识别文件名

来自分类Dev

htaccess重写为名称文件名中带有井号(#)的文件

来自分类Dev

使用相同的名称重命名不同目录中的文件,因此每个文件都有唯一的(编号)名称

来自分类Dev

使用父目录名称重命名多个不同名称和扩展名的文件

来自分类Dev

Bash查找功能Ubuntu-在目录树中查找名称与其目录相同的文件

来自分类Dev

Bash查找功能Ubuntu-在目录树中查找名称与其目录相同的文件

来自分类Dev

如何使用目录名称重命名文件?

来自分类Dev

如何使用其父目录的名称重命名文件?

来自分类Dev

.htaccess将文件名重写为页面

来自分类Dev

htaccess将网址重写为https并删除文件名

来自分类Dev

htaccess重写条件/在文件名中查找模式

来自分类Dev

.htaccess URL重写并与现有文件名冲突

来自分类Dev

htaccess将网址重写为https并删除文件名

来自分类Dev

htaccess 重写总是传递文件名而不是实际的 url

来自分类Dev

如何在python中逐行使用文本文件的新名称重命名文件夹中的文件名

来自分类Dev

在使用.htaccess列出目录中的文件时,如何显示整个文件名?

来自分类Dev

Apache Rewrite (mod_rewrite) 无法重写,如果目录名与根目录下的另一个目录相同,例如 Linux 上的“lib”

来自分类Dev

使用不带目录名称的.htaccess调用重写URL

来自分类Dev

使用 htaccess 更改文件名?

来自分类Dev

使用文件名创建目录哈希

来自分类Dev

使用文件名创建目录哈希

来自分类Dev

重写url并使用这样的文件名nginx提供文件

来自分类Dev

.htaccess重写,其中URL基本名称与目录名称相同

Related 相关文章

  1. 1

    .htaccess,重写与目录相同名称的文件名

  2. 2

    htaccess-重写目录名称相同的文件

  3. 3

    使用与pwd目录相同的名称在头上创建目录

  4. 4

    获取名称与bash中的目录相同的打开文件

  5. 5

    htaccess重写规则,将目录/名称重写为index.php?id

  6. 6

    htaccess重写只获取文件名

  7. 7

    htaccess 重写 - 无法识别文件名

  8. 8

    htaccess重写为名称文件名中带有井号(#)的文件

  9. 9

    使用相同的名称重命名不同目录中的文件,因此每个文件都有唯一的(编号)名称

  10. 10

    使用父目录名称重命名多个不同名称和扩展名的文件

  11. 11

    Bash查找功能Ubuntu-在目录树中查找名称与其目录相同的文件

  12. 12

    Bash查找功能Ubuntu-在目录树中查找名称与其目录相同的文件

  13. 13

    如何使用目录名称重命名文件?

  14. 14

    如何使用其父目录的名称重命名文件?

  15. 15

    .htaccess将文件名重写为页面

  16. 16

    htaccess将网址重写为https并删除文件名

  17. 17

    htaccess重写条件/在文件名中查找模式

  18. 18

    .htaccess URL重写并与现有文件名冲突

  19. 19

    htaccess将网址重写为https并删除文件名

  20. 20

    htaccess 重写总是传递文件名而不是实际的 url

  21. 21

    如何在python中逐行使用文本文件的新名称重命名文件夹中的文件名

  22. 22

    在使用.htaccess列出目录中的文件时,如何显示整个文件名?

  23. 23

    Apache Rewrite (mod_rewrite) 无法重写,如果目录名与根目录下的另一个目录相同,例如 Linux 上的“lib”

  24. 24

    使用不带目录名称的.htaccess调用重写URL

  25. 25

    使用 htaccess 更改文件名?

  26. 26

    使用文件名创建目录哈希

  27. 27

    使用文件名创建目录哈希

  28. 28

    重写url并使用这样的文件名nginx提供文件

  29. 29

    .htaccess重写,其中URL基本名称与目录名称相同

热门标签

归档