Php Apache L|最后一个标志不停止循环

Php Apache L|最后一个标志不停止循环,php,apache,.htaccess,rewrite,rule,Php,Apache,.htaccess,Rewrite,Rule,我正在重写特定页面访问的请求,但我想在一些页面中添加一个排除项。比方说,我希望我的请求site.com/page/test转到site.com/page.php?str=test,但我想在一个字符串中添加一个排除项,用于不转到该页面而是转到另一个页面,比如:site.com/page/contact应该转到site.com/contact.php 我就是这样尝试的: RewriteRule ^static/mobile_app/?$ static/mobile_app.php [QSA,L] R

我正在重写特定页面访问的请求,但我想在一些页面中添加一个排除项。比方说,我希望我的请求site.com/page/test转到site.com/page.php?str=test,但我想在一个字符串中添加一个排除项,用于不转到该页面而是转到另一个页面,比如:site.com/page/contact应该转到site.com/contact.php

我就是这样尝试的:

RewriteRule ^static/mobile_app/?$ static/mobile_app.php [QSA,L]
RewriteRule ^static/([a-zA-Z0-9%.\-_]+)/?$ static/page.php?url_key=$1 [QSA,L]
我在文件的末尾也有这样的内容:

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule .? /static/page.php?url_key=404 [L]
奇怪的是,如果我尝试以下规则,它会起作用:

RewriteRule ^static/mobile_app.php$ static/mobile_app.php [QSA,L]
RewriteRule ^static/([a-zA-Z0-9%.\-_]+)/?$ static/page.php?url_key=$1 [QSA,L]

也就是说,如果我尝试编写扩展名为的完整文件名,它就会工作。有人能帮忙吗?谢谢。

将您完整的
文档\u ROOT/.htaccess
如下所示:

Options +FollowSymLinks -MultiViews
RewriteEngine On

# To externally redirect /dir/file.php to /dir/file
RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s/+(.+?)\.php[\s?] [NC]
RewriteRule ^ /%1 [R=301,L,NE]

RewriteRule ^static/([\w.-]+)/?$ static/page.php?url_key=$1 [QSA,L,NC]

## To internally redirect /dir/file to /dir/file.php
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ^(.+?)/?$ $1.php [L]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /static/page.php?url_key=404 [L,QSA]

尽量清楚地定义你的问题,因为它不是真正可以理解的。@anubhava谢谢。我又在最后一行写下了描述。现在可以理解了吗?我想说的是,如果我在规则中写入完整的文件名,它对我有效。但是我希望规则在不向规则中添加.php的情况下工作。@RajaAmerKhan:什么工作或不工作?我的意思是你在浏览器中键入的url是什么?
联系人的规则在哪里?@regilero Rule static/mobile\u app.php适用于static/mobile\u app.php[L]。然而,static/mobile_app不会转到static/mobile_app.php[L]。谢谢,但它不会将其重定向到请求的文件。在上面的代码中,我尝试了静态/移动应用程序,但它没有将我带到static/mobile_apps.php,而是404页面。我还尝试添加重写规则:^static/mobile\u apps/?$static/mobile\u apps.php[L]以及您的规则,但没有帮助。Q1。这是唯一的.htaccess还是你有其他的?问题2。这是这个.htaccess中唯一的代码吗?如果你有一些其他的代码,那么请张贴它的问题?第三季度。上面的位置是什么。htaccess?1。这是唯一的.htaccess,它位于根目录中(不在静态目录中)。2.不,有很多代码,但都与这些规则无关。这些也是重写规则,但适用于其他页面。我还应该贴吗?3.您发布的最后3行位于底部,其余代码与其他重写规则无关。此外,您的代码将static/testpage.php转换为static/testpage,但这不是我想要的?
static/testpage.php转换为static/testpage,但这不是我想要的
哦,我明白了,我想我没有清楚地理解您的所有需求。你能编辑这个问题并用要点列出你的要求吗。