具有两个不同条件的.htaccess重写规则

g6baxovj  于 2022-11-16  发布在  其他
关注(0)|答案(1)|浏览(165)

我有两个不同的URL:
1.:mysite.com/file.php
2、:mysite.com/**articles**.php?article=**something**
我想将mysite.com/file.php重写为mysite.com/file
以及
我想将mysite.com/**articles**.php?article=something重写为mysite.com/**news**/**something**
我试过了,但是没有用。
它将mysite.com/file.php重写为mysite.com/file,但不将mysite.com/**articles**.php?article=**something**重写为mysite.com/**news**/**something**

RewriteEngine On 
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /([^?\ ]+)\.php 
RewriteCond %{REQUEST_FILENAME} !exception.php 
RewriteRule ^news/([^/]+)(/*)$ /articles.php?article=$1 
RewriteRule ^/?(.*)\.php$ /$1 [L,R=301] 
RewriteCond %{REQUEST_FILENAME}\.php -f 
RewriteRule ^/?(.*)$ /$1.php [L]

(程式码中有一个例外:exception.php,我不想重写。)
你能纠正我的代码吗?我已经工作了4天,我已经阅读了所有的东西,但我不能这样做。

pxyaymoc

pxyaymoc1#

使用显示示例和尝试,请尝试以下.htaccess规则文件请确保在测试URL之前清除浏览器缓存

RewriteEngine ON
##External redirect for file.php file.
RewriteCond %{REQUEST_URI} !/?exception\.php [NC]
RewriteCond %{THE_REQUEST} \s/(file)\.php/?\s [NC]
RewriteRule ^ /%1? [R=301,L]

##Internal rewrite for php files.
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^/]*)/?$ $1.php [QSA,L]

##external + internal rewrite rules for articile.php here.
RewriteCond %{THE_REQUEST} \s/articles\.php\?article=(\S+)\s [NC]
RewriteRule ^ /news/%1? [R=301,L]
RewriteRule ^news/([^/]*)$ articles.php?article=$1 [NC,QSA,L]

相关问题