mod_rewrite convert:XXX-YYY到XXX.php?sub1=YYY

mod_rewrite convert:XXX-YYY到XXX.php?sub1=YYY,php,apache,.htaccess,mod-rewrite,url-rewriting,Php,Apache,.htaccess,Mod Rewrite,Url Rewriting,我正在使用ubuntu灯,并尝试使用mod_rewrite转换url,例如: site/XXX到site/XXX.php和 site/XXX-YYY到site/XXX.php?sub1=YYY 我使用了以下重写规则: RewriteRule ^([a-zA-Z0-9]+)$ ./$1.php RewriteRule ^([a-zA-Z0-9]+)-([a-zA-Z0-9]+)$ ./$1.php?sub1=$2 在我的OSX上的local中,它们运行良好,不管怎样,当在ubuntu服务器上

我正在使用ubuntu灯,并尝试使用mod_rewrite转换url,例如:

  • site/XXX到site/XXX.php和
  • site/XXX-YYY到site/XXX.php?sub1=YYY
我使用了以下重写规则:

RewriteRule ^([a-zA-Z0-9]+)$ ./$1.php
RewriteRule ^([a-zA-Z0-9]+)-([a-zA-Z0-9]+)$ ./$1.php?sub1=$2
在我的OSX上的local中,它们运行良好,不管怎样,当在ubuntu服务器上上传.htaccess时,调用site/test,我无法访问site/test.php,但我得到了404。 Mod_rewrite正在工作,事实上404页面设置在相同的.htaccess中,并且可以工作。 在本地,我在一个文件夹中使用了它:localhost/myfolder/。。。。在remote中,我使用子域的根: app.sitename.com/

有人能帮我吗

这是完整的代码:

RewriteEngine On
RewriteRule ^altro&(.+)? ./altro.php?$1 [L,QSA,NC]
RewriteRule ^([a-zA-Z0-9]+)$ ./$1.php [L,QSA,NC]
RewriteRule ^([a-zA-Z0-9]+)-([a-zA-Z0-9]+)$ ./$1.php?sub1=$2
RewriteRule ^([a-zA-Z0-9]+)-([a-zA-Z0-9]+)-([a-zA-Z0-9]+)$ ./$1.php?sub1=$2&sub2=$3
RewriteRule ^([a-zA-Z0-9]+)-([a-zA-Z0-9]+)-([a-zA-Z0-9]+)-([a-zA-Z0-9]+)$ ./$1.php?sub1=$2&sub2=$3&sub3=$4
RewriteRule ^([a-z]+)-([a-z]+)-([0-9]+)-([a-zA-Z0-9_]+).([a-zA-Z]+)$ ./server/php/files/$1/$2/$3/$4.$5

第一个指令正在工作!事实上,site/altro&code打开altro.php?code

这可能有助于调试:

RewriteLog "/var/log/apache2/rewrite.log"
RewriteLogLevel 3
资料来源:


(您不能将其放入.htaccess。您必须将其放入VirtualHost配置。)

这可能有助于调试:

RewriteLog "/var/log/apache2/rewrite.log"
RewriteLogLevel 3
资料来源:

(您不能将其放入.htaccess。您必须将其放入VirtualHost配置。)

您可以尝试以下代码吗:

RewriteEngine On

RewriteRule ^([a-zA-Z0-9]+)/?$ $1.php [L,QSA]
RewriteRule ^([a-zA-Z0-9]+)-([a-zA-Z0-9]+)/?$ $1.php?sub1=$2 [L,QSA]
Full.htaccess代码:

Options +FollowSymLinks -MultiViews

RewriteEngine On

RewriteRule ^altro&(.+) altro.php?$1 [L,QSA,NC]
RewriteRule ^([a-zA-Z0-9]+)$ $1.php [L]
RewriteRule ^([a-zA-Z0-9]+)-([a-zA-Z0-9]+)$ $1.php?sub1=$2 [L,QSA]
RewriteRule ^([a-zA-Z0-9]+)-([a-zA-Z0-9]+)-([a-zA-Z0-9]+)$ $1.php?sub1=$2&sub2=$3 [L,QSA]
RewriteRule ^([a-zA-Z0-9]+)-([a-zA-Z0-9]+)-([a-zA-Z0-9]+)-([a-zA-Z0-9]+)$ $1.php?sub1=$2&sub2=$3&sub3=$4 [L,QSA]
RewriteRule ^([a-z]+)-([a-z]+)-([0-9]+)-([a-zA-Z0-9_]+).([a-zA-Z]+)$ server/php/files/$1/$2/$3/$4.$5 [L,QSA]
您可以尝试以下代码:

RewriteEngine On

RewriteRule ^([a-zA-Z0-9]+)/?$ $1.php [L,QSA]
RewriteRule ^([a-zA-Z0-9]+)-([a-zA-Z0-9]+)/?$ $1.php?sub1=$2 [L,QSA]
Full.htaccess代码:

Options +FollowSymLinks -MultiViews

RewriteEngine On

RewriteRule ^altro&(.+) altro.php?$1 [L,QSA,NC]
RewriteRule ^([a-zA-Z0-9]+)$ $1.php [L]
RewriteRule ^([a-zA-Z0-9]+)-([a-zA-Z0-9]+)$ $1.php?sub1=$2 [L,QSA]
RewriteRule ^([a-zA-Z0-9]+)-([a-zA-Z0-9]+)-([a-zA-Z0-9]+)$ $1.php?sub1=$2&sub2=$3 [L,QSA]
RewriteRule ^([a-zA-Z0-9]+)-([a-zA-Z0-9]+)-([a-zA-Z0-9]+)-([a-zA-Z0-9]+)$ $1.php?sub1=$2&sub2=$3&sub3=$4 [L,QSA]
RewriteRule ^([a-z]+)-([a-z]+)-([0-9]+)-([a-zA-Z0-9_]+).([a-zA-Z]+)$ server/php/files/$1/$2/$3/$4.$5 [L,QSA]


您的规则是否在一个
容器中?不,不是!它应该在那个容器里吗?不,不需要。您确定在vhost的配置中有
AllowOverride All
AllowOverride FileInfo
吗?是的,我有。事实上,其他指令如:RewriteRule^altro&(.+)/php?$1[L,QSA,NC]运行良好您的规则在
容器中吗?不,不是!它应该在那个容器里吗?不,不需要。您确定在vhost的配置中有
AllowOverride All
AllowOverride FileInfo
吗?是的,我有。事实上,其他指令如:RewriteRule^altro&(.+)/altro.php?$1[L,QSA,NC]运行良好使用:RewriteRule^([a-zA-Z0-9]+)-?$$1.php[L,QSA]它可以工作,但我想直接调用:site/pagename而不是site/pagename/或site/pagename否,它不工作。无论是pagename/还是pagename,如果我只使用“-”,它与pagename一起工作-真的不明白。你能在你的问题中发布你最新的&complete.htaccess吗?是的!这里是:
RewriteEngine On RewriteRule^altro&(.+)/1.php[L,QSA,QSA,NC]重写规则1.php[L,QSA,QSA,NC]重写规则1.php[L,QSA,NC]重写规则1.php[L,QSA,QSA,NC]重写规则1.php?1[L,QSA,QSA,QSA,QSA,QSA,QSA,NC]重写规则1.php?亚1.php?亚1.php?亚1.php?亚元元元元元元元2重写规则2.重写规则1.php?1.php?亚1.php?亚1.php?亚1.php?亚..........亚1..亚1.php?亚元元元元元元元2重写规则2重写规则2重写规则2重写规则2.^,(,(,(,(,(,(,(,(,(,(5-重写规则2)()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()([a-zA-Z0-9]+)-([a-zA-Z0-9]+)$./$1.php?sub1=$2&sub2=$3&sub3=$4重写规则^([a-z]+)-([a-z]+)-([0-9]+)-([a-zA-Z0-9+).([a-zA-z]+)$。/server/php/files/$1/$2/$3/$4.$5
第一个指令正在运行!事实上,site/altro&code打开altro.php?code从注释中读取它是不可能的。编辑您的问题并将此代码发布到那里。使用:RewriteRule^([a-zA-Z0-9]+)-?$$1.php[L,QSA]它可以工作,但我想直接调用:site/pagename而不是site/pagename/或site/pagename否,它不工作。pagename/或pagename都不工作,只有当我使用“-”时,它与pagename一起工作-真的不明白。你能在你的问题中发布你最新的&complete.htaccess吗?是的!这里是:
RewriteEngine On-RewriteRule^altro&(.+)[a-zA-zA-zA-ZZ-10-10-10-10-10-8-9 9]+)美元/1.php[L,QSA,NC]重写规则1.php[L,QSA,QSA,NC]重写规则1.php...php.........................................................[1.1.php.php.亚1.php..亚1.亚1...亚1..亚1......亚1...............亚1..1...............亚1....1...................................[a-zA-Z0-9]+)-([a-zA-Z0-9]+)$./$1.php?sub1=$2&sub2=$3&sub3=$4重写规则^([a-z]+)-([a-z]+)-([0-9]+)-([a-zA-Z0-9+).([a-zA-z]+)$/server/php/files/$1/$2/$3/$4.$5
第一个指令正在运行!事实上site/altro&code打开altro.php?codeOh不可能从评论中读取它。编辑您的问题并将此代码发布到那里。我已经尝试过,最后得到了:87.14.78.188-[22/Oct/2013:21:53+0200][app.XXX.it/sid#7ffec16A66b0][rid#7ffec16a10a0/subreq](1)[perdir/var/www/app/]pass-through/var/www/app/test.php似乎是正确的!!test.php文件存在,并且它在那个文件夹中!无论如何,我得到了:找不到请求的URL/test在此服务器上找不到。我已经尝试过了,最后得到了:87.14.78.188--[22/Oct/2013:21:53:07+0200][app.XXX.it/sid#7ffec18566b0][rid#7ffec16a10a0/subreq](1)[perdir/var/www/app/]pass-through/var/www/app/test.php这似乎是正确的!!test.php文件存在并且它在该文件夹中!无论如何我得到:找不到请求的URL/test在此服务器上找不到。