当前位置: 首页 > 知识库问答 >
问题:

. htaccess冲突:如何删除. php并重写URL?

孔征
2023-03-14

这是我的情况:我有一个目录,我需要重写URL,所以?page=Hello可以通过/Hello/Hello/访问。然后我有一个子目录,它需要. php扩展名被可选地删除,所以/subdir/example.php可以在/subdir/form/subdir/form/访问。

我独立开发了网站的两个部分,现在我很难让htaccess满足这两个要求。

我当前的。htaccess文件是:

RewriteEngine On

# The root directory bit...
Redirect 301 /home /
RewriteEngine On
RewriteCond %{REQUEST_URI} !/subdir
RewriteRule ^([A-Za-z0-9-_/]+)/?$ index.php?page=$1 [L]

# Remove .php
RewriteEngine On
RewriteRule ^(.+)\.php$ /$1 [R,L]
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ^(.*?)/?$ /$1.php [NC,END]

这些规则完全独立运作(如果我删除另一条,但一起删除)。但是重写规则失败了。

我已经尝试使用适当的规则(root dir的nice URL规则和subdir的remove.php)创建两个单独的htaccess文件,一个用于subdir,另一个用于root dir),但这仅仅意味着删除。php不再工作。

有人对此有什么解决办法吗或者有什么资源可以为我指明正确的方向?我目前在一个PHP和Apache文档的洞!

共有1个答案

燕璞
2023-03-14

这就是成功的原因:

RewriteEngine On

RewriteCond %{DOCUMENT_ROOT}/$1.php -f
RewriteRule ^(subdir/.*?)/?$ $1.php [L,NC]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /index.php?page=$1 [QSA,L]

这只会删除子目录文件的. php,但总比没有好。

 类似资料:
  • 问题内容: 网站正在无法访问文件的网络主机上运行。但是,我想对用户友好的URL进行URL重写。 例如原始URL 预期网址 问题答案: 正如其他人所说,只需使用即可。 网址中间的“ index.php”可能看起来有些奇怪,但是我认为没有.htaccess可能无法使其看起来更好 否则,您可以要求托管服务商将任何URL重定向到/index.php,以便无需使用URL就可以处理URL重写。 然后,您可以使

  • 嗯,我的.htaccess有问题,我想重写这个: http://domain.com/a/thread-103518.html#103518 对这个 http://domain.com/a/103518 换句话说。。。我想删除“thread-”和“.”后面的所有内容,/a/必须是变量。。。还有其他带有/bla/和/code的论坛/ 你有什么线索给我吗?非常感谢。 我的.htaccess现在: 重写

  • 我已经在conda环境中使用这个安装了protobuf。因此,一旦我想安装一个软件,它就会显示以下错误消息: 我试图找出已经安装了哪些版本的协议 通过此命令卸载protobuf后,即使在删除编译器后,conda uninstall protobuf: 如何卸载这个libprotoc 3.4.0?即使通过这个命令删除并成功删除,它仍然显示protoc版本为。有人能帮忙吗?我只需要。谢谢

  • 我的主托管域需要ssl,所以htaccess将每个url请求转换为https。 但我在同一个托管另一个域上使用cpanel dir结构(“public_html/addon domain.com”) htaccesspublic_html是我唯一能配置的。因此,当用户键入www.addondoamin.com或没有www时,htaccess将不会做任何事情。o/w,我得到了许多错误和addon域镜

  • 我会骗你使用这个库:https://github.com/toolkito/laravel-social-auto-posting 在5.4 Laravel装置上。使用此mex失败: 问题1-安装请求的工具/larasap^1.2- 因此,首先,我尝试通过运行以下命令来更新Illumb: 但同样,问题是: 问题1-laravelcollective/html v5。4.1需要照明/支撑5.4.*-

  • 我需要一个解决方案。需要重写两个URL: 到 我尝试了许多不同的解决方案,但没有一个奏效。然而,我确实重写了这些网址,就像我说的,但是我的页面没有打开,所以我想它都在细节中。 对于提示: > onama.php和pravila.php文件位于/pages/目录中 编辑: 我想我很幸运:)用这个再试了一次,它成功了,我不擅长.htaccess规则,但这是我问题的解决方案: 编辑(新问题) 我试图制定