htaccess重命名索引.php以在SEO的URL中显示为友好名称

htaccess rename index.php to show as friendly name in URL for SEO

提问人:Erich Mosier 提问时间:11/2/2023 更新时间:11/2/2023 访问量:38

问:

文件夹结构是这样的:

  •  -->folder
    
  •     -->subfolder
    
  •         -->index.php
    
  •         -->another-file.php
    

我想要的是,当我去默认情况下加载索引.php时,将在URL中显示/文件夹/子文件夹/更多可读名称。/folder/subfolder

我试过做这样的事情:

RewriteRule ^folder/subfolder/index.php  /folder/subfolder/more-readable-name-of-my-choosing

但我还没有完全弄清楚正确的模式。

或者,我可以将索引文件重命名为 ,然后我需要弄清楚如何在不阻止我访问子文件夹中的其他文件的情况下重定向到它more-readable-name-of-my-choosing.php/folder/subfolder/

php .htaccess

评论


答:

0赞 Web Marketing Solution Network 11/2/2023 #1

要实现 SEO 的友好 URL 并在 URL 中重命名为更易读的名称,您可以在文件中使用 Apache 的 mod_rewrite 模块。您可以在不更改文件名的情况下重写 URL,也可以重命名索引文件。index.php.htaccess

以下是两种不同的方法:

选项 1:重写 URL

RewriteEngine On

# Rewrite /folder/subfolder/more-readable-name-of-my-choosing to /folder/subfolder/index.php
RewriteRule ^folder/subfolder/more-readable-name-of-my-choosing/?$ /folder/subfolder/index.php [L]

# Rewrite /folder/subfolder/ to /folder/subfolder/more-readable-name-of-my-choosing
RewriteRule ^folder/subfolder/?$ /folder/subfolder/more-readable-name-of-my-choosing [L]

这将允许您使用更友好的 URL 访问您的文件,也可以使用原始 URL 访问它。index.php/folder/subfolder/more-readable-name-of-my-choosing/folder/subfolder/

选项 2:重命名索引文件

如果要将索引文件本身重命名为该子文件夹中的其他文件,并且仍可访问该子文件夹中的其他文件,则可以使用以下规则:more-readable-name-of-my-choosing.php.htaccess

RewriteEngine On

# Rewrite /folder/subfolder/ to /folder/subfolder/more-readable-name-of-my-choosing.php
RewriteRule ^folder/subfolder/?$ /folder/subfolder/more-readable-name-of-my-choosing.php [L]

# Allow access to other PHP files in the subfolder directly
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^folder/subfolder/([^/]+)/?$ /folder/subfolder/$1 [L]

请确保根据您的文件夹结构和要使用的特定名称调整规则中的路径和文件名。 还要检查您的服务器是否已启用。mod_rewrite

更新

如果选项 1 的前半部分未按预期工作,则 .htaccess 文件或服务器配置中可能存在冲突或其他规则,从而影响该行为。试试这个:

RewriteEngine On

# Rewrite /folder/subfolder/ to /folder/subfolder/more-readable-name-of-my-choosing
RewriteRule ^folder/subfolder/?$ /folder/subfolder/more-readable-name-of-my-choosing [R=301,L]

# Rewrite /folder/subfolder/more-readable-name-of-my-choosing to /folder/subfolder/index.php
RewriteRule ^folder/subfolder/more-readable-name-of-my-choosing/?$ /folder/subfolder/index.php [L]

评论

0赞 Erich Mosier 11/2/2023
选项 1 对我来说非常有效。谢谢。
0赞 Erich Mosier 11/2/2023
更新:起初我以为选项 1 有效,但现在不是了。当我转到 /folder/subfolder/ 时,URL 只是文件夹/子文件夹。它没有添加“我选择的更具可读性的名称”。那是选项 1 的前半部分。如果我添加选项1的后半部分,那么它会告诉我在此服务器上找不到请求的URL /folder/subfolder/more-readable-name-of-my-choosing.php
0赞 Erich Mosier 11/2/2023
选项 2 与选项 1 存在相同的问题。仅在 URL 中显示文件夹/子文件夹,而没有添加“更多可读名称”。
0赞 Web Marketing Solution Network 11/2/2023
请尝试更新的答案。
1赞 Erich Mosier 11/2/2023
@WebMarketingSolutionNetwork 这次更新的解决方案奏效了。再次感谢你。