Mod rewrite 查询字符串的Mod rewrite
Mod Rewrite noob所以请原谅我的无知,但我所要做的只是删除一个简单的查询字符串 发件人:Mod rewrite 查询字符串的Mod rewrite,mod-rewrite,Mod Rewrite,Mod Rewrite noob所以请原谅我的无知,但我所要做的只是删除一个简单的查询字符串 发件人:http://yourwebsite.com/x?section=y 收件人:http://yourwebsite.com/x/y 我正在我的.htaccess中添加我的mod rewrite规则,如下所示: ErrorDocument 404 /404 Options +MultiViews RewriteEngine on RewriteCond %{REQUEST_FILENAME} !
http://yourwebsite.com/x?section=y
收件人:http://yourwebsite.com/x/y
我正在我的.htaccess中添加我的mod rewrite规则,如下所示:
ErrorDocument 404 /404
Options +MultiViews
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^(.*)$ $1.php
RewriteCond %{QUERY_STRING} ^section=(.*)$ [NC]
RewriteRule ^(.*)$ /$1/%1? [R=301,L,NE]
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^(.+)\/(.+)$ /$1.php?section=$2 [L]
RewriteCond %{QUERY_STRING} ^section=(.*)$ [NC]
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^(.*)$ /$1/%1 [R=301,L,NE]
问题是在访问时:
http://yourwebsite.com/x?section=y
我的规则将其写回:
http://yourwebsite.com/x.php/y
漂亮url中的.php非常难看,我正在努力摆脱它
我的mod rewrite规则出了什么问题?很可能您正在寻找以下内容:
ErrorDocument 404 /404
Options +MultiViews
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^(.*)$ $1.php
RewriteCond %{QUERY_STRING} ^section=(.*)$ [NC]
RewriteRule ^(.*)$ /$1/%1? [R=301,L,NE]
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^(.+)\/(.+)$ /$1.php?section=$2 [L]
RewriteCond %{QUERY_STRING} ^section=(.*)$ [NC]
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^(.*)$ /$1/%1 [R=301,L,NE]
它进行了两次重写:
x/y
在内部被重写为x.php?section=y
x?section=y
的请求被重定向到x/y
提示:如果您可以使用apaches重写模块的日志功能(
RewriteLog
和RewriteLogLevel
),这将为您提供大量关于重写过程中实际发生的情况的详细信息 很可能存在一个文件x.php
,因此第一个RewriteRule
匹配并将请求重写到x.php
。正如您配置的那样。那么你想做什么呢?x.php
存在。可通过http://yourwebsite.com/x
。我想要像http://yourwebsite.com/x?section=y
重写为http://yourwebsite.com/x/y
。目前,它们被重写为http://yourwebsite.com/x.php/y
我不想要第1点
。我只想要第2点。我的规则几乎有效,只是我无法摆脱丑陋的.php。在规则应用之后,x?section=y
看起来像x.php/y
那么a)看看我对你的问题的评论:你用你自己的第一个RewriteRule
显式地配置了对x.php的重写,b)我想说你可以更改,但是x.php不会被调用,您将得到一个不存在/x
的错误。问题:当请求x/y
时,您希望执行x.php
(可能使用参数section=y
)还是在内部请求x
?