我已经有了Typo3 Flow .htaccess # #TYPO3流程上下文设置 #
# You can specify a default context by activating this option:
# SetEnv FLOW_CONTEXT Production
# If the root path is not the parent of the Web directory,
# TYPO3 Flow's root path must be specified manually:
# SetEnv FLOW_ROOTPATH /var/www/myapp/
#
# mod_rewrite configuration
#
<IfModule mod_rewrite.c>
# Enable URL rewriting
RewriteEngine On
# Set flag so we know URL rewriting is available
SetEnv FLOW_REWRITEURLS 1
# You will have to change the path in the following option if you
# experience problems while your installation is located in a subdirectory
# of the website root.
RewriteBase /
# Stop rewrite processing no matter if a package resource, robots.txt etc. exists or not
RewriteRule ^(_Resources/Packages/|robots\.txt|favicon\.ico) - [L]
# Stop rewrite process if the path points to a static file anyway
RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule .* - [L]
# Perform rewriting of persistent private resources
RewriteRule ^(_Resources/Persistent/[a-zA-Z0-9]+/(.+/)?[a-f0-9]{40})/.+(\..+) $1$3 [L]
# Perform rewriting of persistent resource files
RewriteRule ^(_Resources/Persistent/.{40})/.+(\..+) $1$2 [L]
# Make sure that not existing resources don't execute TYPO3 Flow
RewriteRule ^_Resources/.* - [L]
# Continue only if the file/symlink/directory does not exist
RewriteRule (.*) index.php
</IfModule>
<IfModule mod_negotiation.c>
# prevents Apache's automatic file negotiation, it breaks resource URLs
Options -MultiViews
</IfModule>
<IfModule mod_setenvif.c>
# Redirect authorization header when PHP is running as CGI
SetEnvIfNoCase Authorization "Basic ([a-zA-Z0-9\+/=]+)" REMOTE_AUTHORIZATION=$0
</IfModule>
ErrorDocument 500 "<h1>Application Error</h1><p>The TYPO3 Flow application could not be launched.</p>"
所以我认为这是标准的流量htaccess。 是否有可能定义自己的规则?
我的htaccess技能非常糟糕。我需要编辑什么来替换GET参数
show?path=
我的域名看起来像 http://domain.com/show?path=/test/test2
看起来应该是这样的 http://domain.com/show/test/test2
提前致谢,问候
答案 0 :(得分:0)
是的,您可以扩展.htaccess并且如果您启用了mod_proxy,那么添加此行应该足够了(查看[P] flag does)
# Add this line
RewriteRule ^show/(.*)$ /show?path=/$1 [P]
# Continue only if the file/symlink/directory does not exist
RewriteRule (.*) index.php
但是你应该使用Routing处理这种东西 - 然后你将使用框架来处理uri构建和重写。
如果你的path
只是showAction中的字符串参数,那么十加入My/Package/Configuration/Routes.yaml
(并在Flow子路径上方的主Configuration/Routes.yaml
中设置子路径)
-
name: 'show'
uriPattern: 'show/{path}'
defaults:
'@package': 'My.Package'
'@controller': 'Standard'
'@action': 'show'
'@format': 'html'
appendExceedingArguments: true
如果它是对象的属性,你可以在上面的链接中找到示例。
唯一的问题是参数中的/
(如'/ test / test2')不适用于上面的路由。要处理包含/
的参数,您可能需要创建自己的{ {3}}