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

htaccess重写条件不工作

金正阳
2023-03-14

我希望你能帮忙。我试图写一个htaccess文件做以下事情。

1)重定向到www.地址

2) 从url中删除.php

3) 如果文件不存在,则使用filechecker.php?page=filename

1.我能忍受

RewriteCond%{HTTP_HOST}^example.com$

*)http://www.example.com/1美元[R=301, L]

2) 我受够了

RewriteCond%{SCRIPT_FILENAME}.php-f

重写规则 [^/]$ %{REQUEST_URI}. php[QSA, L]

3)我以为

重写cond%{REQUEST_FILENAME}.php-F

重写规则 ^([^/]*)$ filechecker.php?page=1美元[QSA,L]

这样做是可行的,但出于某种原因,它忽略了页面确实存在的事实。

我希望你能帮助马克

共有1个答案

罗翰
2023-03-14

第2部分的解决方案将循环,但非常简单,可以修复,在第2部分和第3部分的文件中沿以下行粘贴一些内容:

#If the Browser request contains a .php, instruct the browser to remove it.
RewriteCond %{THE_REQUEST}      \.php      [NC]
RewriteRule ^/?(.*)\.php$       http://%{HTTP_HOST}/$1         [R=301,NC,L]

#If a request is received for a non file-system object, that doesn't have a .php suffix, then store the full path, filename, and URI in a variables with that extention.
RewriteCond %{SCRIPT_FILENAME} !-d
RewriteCond %{SCRIPT_FILENAME} !-s
RewriteCond %{SCRIPT_FILENAME} !-f
RewriteCond %{SCRIPT_FILENAME} !^\.php$  [NC]
RewriteRule ([^/]+)$      -  [E=testScript:%{SCRIPT_FILENAME}.php,E=testFile:$1.php,E=testURI:%{REQUEST_URI}.php]

#See if the file exists with a .php extention, if it does internally rewrite
RewriteCond %{ENV:testScript} -s  [OR]
RewriteCond %{ENV:testScript} -f
RewriteRule .*              %{ENV:testURI} [L]

#Else if a ENV:testDile is set, then pass the name to the php script
RewriteCond %{ENV:testFile} !^$
RewriteRule .*               /filechecker.php?page=%{ENV:testFile} [L]

仅供参考:Apachemod_rewrite留档值得一读,如果你不清楚上面的规则是做什么的,或者如果你想要更抽象的东西,请考虑下面的帖子。

 类似资料:
  • 重写httpd.conf中的模块如下: 通往成功之路。htaccess: 所以在。htacess我有这个: 我希望尝试: 而不是: 它应该可以工作,因为它在生产环境中工作,而不是在本地主机上,我有wamp服务器apache,下面是一些配置: 在C:\wamp\bin\apache\apache2.4.9\conf\httpd.conf中: 这是不正确的,因为Anu说,所以我改变了在C:\wamp\

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

  • 问题内容: 我有一个index.php,它处理所有路由index.php?page = controller(简体)只是为了与视图分离逻辑。 我无法与Rewriterule一起使用。 控制器可能如下所示: 并且: 问题答案: 基本上人们想说的是,您可以像这样编写重写规则: 这将使您的实际php文件如下所示: 您的实际网址如下所示: 在您的PHP文件中,您可以通过如下分解方式来访问参数:

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

  • 我用CodeIgniter和几个控制器构建了一个应用程序 除了在应用/配置/routes.php文件中设置为默认的控制器之外,所有控制器似乎都工作正常 我的. htaccess文件看起来像这样: 重写引擎在 RewriteBase/ RewriteCond%{REQUEST_FILENAME}上-重写cond%{REQUEST_FILENAME}-d 重写规则^(.*)$/索引。php/$1[L]

  • 我有一个客户在他们的网站上有一个重写规则,使用404和SSL与https:但它总是重写为“www.mywebsite”。com'。他们希望它没有www。每当我试图修改规则时,代码就会因“太多重定向”而中断 这是旧的. htaccess规则 我试图删除上面的“www”,但当我这样做时,你会得到一个错误-无休止的重定向。 目标是一个简单的重写规则,允许所有重定向和404错误转到https://mywe