考虑一个重定向到另一个页面的Wicket WebPage(基于此处省略的一些逻辑):
public class SomePage extends WebPage {
public SomePage(PageParameters parameters) {
setResponsePage(AnotherPage.class);
setRedirect(true);
}
}
Run Code Online (Sandbox Code Playgroud)
我需要将PageParameters传递给其他页面,这似乎是这样做的方式:
setResponsePage(new AnotherPage(parameters));
Run Code Online (Sandbox Code Playgroud)
但是,在创建这样的新Page对象时,我最终会使用URL /?wicket:interface=:1::::而不是clean /another.AnotherPage定义为:
@MountPath(path = "another")
public class AnotherPage extends WebPage {
// ...
}
Run Code Online (Sandbox Code Playgroud)
(其中MountPath来自org.wicketstuff.annotation.mount包.)
所以,我的问题是:
嘿,原来任何建议的方法是可行的,而且也是我最初试图- setResponsePage(new AnotherPage(parameters))-只要我删除setRedirect(true).在这种情况下,URL确实保持不变(SomePage的路径),我刚刚意识到我真的应该从一开始就提到它是可以的,如果它确实(只要它"漂亮"并且参数传递)!
页面("SomePage")基于查询参数将请求分派给几个看起来不同但通过相同URL访问的可能结果页面.我试图尽可能地将问题表述为通用和极简主义,但是当我遗漏相关信息时,这就出错了.: - /
对不起,如果这对他人来说很奇怪,不清楚或无用.如果您有关于重命名的建议,请随时发表评论.
我运行一个用户拥有自己的个人资料页面的网站.他们还可以发布待售产品(他们已经制作)和撰写/导入博客文章.我将实现站点地图,我需要使用URL策略做出最终决定.
这是我目前对产品的看法(其中1234是我用来查找该产品的产品ID):NB"product"是一个固定的字符串(尽管它是实际网站中的另一个字) - 所有其他的都是动态的,具体取决于项目.
我应该换成其中任何一个吗?即:
需要考虑的主要项目是:
我正在设计一个托管的软件即服务应用程序,就像37Signal的Highrise产品的高度专业化版本.在这种情况下,SEO是一个非问题,是否值得实施"漂亮的URL"而不是使用数字ID(例如,customers/john-smith而不是customers/1234)?我注意到很多网络应用程序都不打扰它们,除非它们提供真正的价值(例如电子商务应用程序,博客 - 需要通过搜索引擎找到SEO的东西)
我之前问过这个问题的补充:
Mod_rewrite不可见:当目标是文件时工作,而不是当它是目录时
现在我真的希望重写是明显的,因为我已经切换了URL方案,虽然我希望旧的链接工作,但我希望用户看到新的URL方案.
这样可行
RewriteRule ^oldscheme/(.*)/?$ newscheme/$1
Run Code Online (Sandbox Code Playgroud)
但地址栏中的URL仍为http://example.com/oldscheme/foo.
什么是进行可见重写的正确方法,最好只使用mod_rewrite,而不是使用位置重定向或类似的东西?
我的页面中有一个命令链接,如下所示:
<h:commandLink value="Add user" action="add?faces-redirect=true" />
Run Code Online (Sandbox Code Playgroud)
当我点击它,它会转到网址:
http://localhost:8080/myapp/faces/add.xhtml
Run Code Online (Sandbox Code Playgroud)
但我希望网址是:
http://localhost:8080/myapp/add
Run Code Online (Sandbox Code Playgroud)
怎么做 ?
我正在使用spring 3,jsf 2
这是我的web.xml:
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
id="WebApp_ID" version="2.5">
<display-name>myapp</display-name>
<!-- Add Support for Spring -->
<listener>
<listener-class>
org.springframework.web.context.ContextLoaderListener
</listener-class>
</listener>
<listener>
<listener-class>
org.springframework.web.context.request.RequestContextListener
</listener-class>
</listener>
<!-- Change to "Production" when you are ready to deploy -->
<context-param>
<param-name>javax.faces.PROJECT_STAGE</param-name>
<param-value>Development</param-value>
</context-param>
<!-- Welcome page -->
<welcome-file-list>
<welcome-file>faces/users.xhtml</welcome-file>
</welcome-file-list>
<!-- JSF mapping -->
<servlet>
<servlet-name>Faces Servlet</servlet-name>
<servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<!-- Map …Run Code Online (Sandbox Code Playgroud) htaccess删除我网站文件的.php扩展名.
RewriteEngine on
RewriteBase /
RewriteCond %{SCRIPT_FILENAME} !-d
RewriteCond %{SCRIPT_FILENAME} !-f
RewriteRule ^(.*)$ $1.php [L,QSA]
Run Code Online (Sandbox Code Playgroud)
现在,如果我去我的网站
www.mysite.com/home
Run Code Online (Sandbox Code Playgroud)
工作正常,它重定向到home.php但URL仍然友好.
但是,如果我写这个URL:
www.mysite.com/home.php
Run Code Online (Sandbox Code Playgroud)
提供home.php,URL不友好.
我该如何避免这种行为?我希望如果用户写www.mysite.com/home.php,则URL栏中显示的URL为www.mysite.com/home
我过去几天一直在学习使用struts2 rest插件.但没有 - 我在哪里找到了如何映射长休息URL.
例如,如果我想映射如下的URL:
/profiles/user-test/orders/64/item/4
Run Code Online (Sandbox Code Playgroud)
哪里
username is user-test
order id is 64
item id is 4
Run Code Online (Sandbox Code Playgroud)
如何将这样的内容映射到struts2动作?
我在互联网上找到的只是一个级别被编辑/显示等.但如果我想在多个级别上显示某些内容 - 那么如何继续?请指导.
我使用Microsoft.AspNet.FriendlyUrls在ASP.NET c#WebForms中使用Routing,但不是所有页面都使用.
这是一个例子:
routes.MapPageRoute("List/{Location}/{ZipCode}/", "List/{Location}/{ZipCode}/", "~/List.aspx");
Run Code Online (Sandbox Code Playgroud)
在page_load中的上述页面(List.aspx)中,Page.RouteData中没有values.count.
Page.RouteData.Values.Count == 0
Run Code Online (Sandbox Code Playgroud)
我在同一网站上有另一页与此信息匹配:
routes.MapPageRoute("{Location}/{ZipCode}/{Name}/{LocID}/{ID}/{Code}/", "{Location}/{ZipCode}/{Name}/{LocID}/{ID}/{Code}/", "~/place.aspx");
Run Code Online (Sandbox Code Playgroud)
此页面(place.aspx)始终显示正确的路径计数.
在调试模式的List页面上,我检查了查询字符串和位置,ZipCode就在那里.
那么,什么可能导致Page.RouteData不在一个页面中显示但在另一个页面中可用?
我FriendlyUrls通过NuGet 将包添加到我的asp.net网页项目中.
当我调试解决方案,它返回错误ASP.ViewSwitcher中ViewSwitcher.ascx无法加载.
我没有在互联网上找到关于这个问题的任何内容.
有人可以帮助我,如何解决这个问题?

我有我的 URL https://example.com/?hfgshdsds。
我需要重写一个规则,即使我删除了问号,链接也会像以前一样工作,所以我的 url 需要是https://example.com/hfgshdsds。
目前,在我的 .htaccess 文件中,我只有打开 php 而没有扩展名 .php 的规则。
RewriteEngine On
RewriteCond %{THE_REQUEST} ^GET.*index\.php [NC]
RewriteRule (.*?)index\.php/*(.*) /$1$2 [R=301,NE,L]
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule !.*\.php$ %{REQUEST_FILENAME}.php [QSA,L]
Run Code Online (Sandbox Code Playgroud)
谢谢!