我是apache的新手,所以这是一个基本问题,但我无法使用其他问题或链接来解决这个问题。
我尝试使用URL
更改.htaccess
,我有两个目的;
.php
扩展程序somefile.php?id=bar
更改为somefile/id/bar
bar
是一个数字或混合字符串,如 {{ 1}} 即可。
T51-3
,我想将其更改为 http://localhost/payment/theme/ticket?id=770314
或
http://localhost/payment/theme/ticket/id/770314
我找到了这段代码:
http://localhost/payment/theme/ticket/770314
在stackoverflow.com/this_question
这很好但是没有解决我的第二个问题。
所以,我在这个网站和其他网站搜索了一段时间,并找到了一些像这样的示例代码:
Options +FollowSymLinks -MultiViews
# Turn mod_rewrite on
RewriteEngine On
RewriteBase /
# To externally redirect /dir/foo.php to /dir/foo
RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s([^.]+)\.php [NC]
RewriteRule ^ %1 [R,L,NC]
## To internally redirect /dir/foo to /dir/foo.php
RewriteCond %{REQUEST_FILENAME}.php -f [NC]
RewriteRule ^ %{REQUEST_URI}.php [L]
或
RewriteRule ^([a-zA-Z0-9_-]+)-([0-9]+)$ ticket.php?id=$2
等...
但这些都不适合我。
其中一些将使服务器完成,一些根本没有任何影响。
你能指导我走正确的路吗?
我看了这些问题:
htaccess rewrite for query string
how to change query string parameters with name using .htaccess?
How can I use .htaccess to hide .php URL extensions?
这些链接:
http://simonecarletti.com/blog/2009/01/apache-query-string-redirects/
https://wiki.apache.org/httpd/RewriteQueryString
更新:
这是我的网站结构:
重要文件夹有一个htaccess,例如RewriteRule ^(.*)$ /ticket.php?url=$1 [L]
,forms
,db
等...
我的所有网站页面都在classes
文件夹中,如图所示。
在root htaccess中,只有两行自动启动会话。
我将你的代码添加到主题的htaccess中。
的 theme
答案 0 :(得分:0)
您可以在
中使用此代码Options +FollowSymLinks -MultiViews
RewriteEngine On
RewriteBase /payment/theme/
# To externally redirect /dir/foo.php to /dir/foo
RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s([^.]+)\.php\?(\w+)=([^\s&]+)\s [NC]
RewriteRule ^ %1/%2/%3? [R,L]
RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s([^.]+)\.php [NC]
RewriteRule ^ %1 [R,L]
# to handle http://localhost/payment/theme/ticket/id/770314
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(\w+)/([\w-]+)/([\w-]+)/?$ $1.php?$2=$3 [L,QSA]
## To internally redirect /dir/foo to /dir/foo.php
RewriteCond %{REQUEST_FILENAME}.php -f [NC]
RewriteRule ^(.+?)/?$ $1.php [L]